brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · eaf69d1 Raw
93 lines · plain
1//===-- cxx_proto.proto - Protobuf description of C++ ---------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8///9/// \file10/// This file describes a subset of C++ as a protobuf.  It is used to11///  more easily find interesting inputs for fuzzing Clang.12///13//===----------------------------------------------------------------------===//14 15syntax = "proto2";16 17message VarRef {18  required int32 varnum = 1;19}20 21message Lvalue {22  required VarRef varref = 1;23}24 25message Const {26  required int32 val = 1;27}28 29message BinaryOp {30  enum Op {31    PLUS = 0;32    MINUS = 1;33    MUL = 2;34    DIV = 3;35    MOD = 4;36    XOR = 5;37    AND = 6;38    OR = 7;39    EQ = 8;40    NE = 9;41    LE = 10;42    GE = 11;43    LT = 12;44    GT = 13;45  };46  required Op op = 1;47  required Rvalue left = 2;48  required Rvalue right = 3;49}50 51message Rvalue {52  oneof rvalue_oneof {53    VarRef varref = 1;54    Const cons = 2;55    BinaryOp binop = 3;56  }57}58 59message AssignmentStatement {60  required Lvalue lvalue = 1;61  required Rvalue rvalue = 2;62}63 64 65message IfElse {66  required Rvalue cond = 1;67  required StatementSeq if_body = 2;68  required StatementSeq else_body = 3;69}70 71message While {72  required Rvalue cond = 1;73  required StatementSeq body = 2;74}75 76message Statement {77  oneof stmt_oneof {78    AssignmentStatement assignment = 1;79    IfElse              ifelse     = 2;80    While               while_loop = 3;81  }82}83 84message StatementSeq {85  repeated Statement statements = 1;86}87 88message Function {89  required StatementSeq statements = 1;90}91 92package clang_fuzzer;93