brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 360042d Raw
82 lines · plain
1//===-- cxx_loop_proto.proto - Protobuf description of C++ with for loops -===//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 LLVM's vectorizer.12///  This subset differs from the one defined in cxx_proto.proto by eliminating13///  while loops and conditionals. The goal is that the C++ code generated will14///  be more likely to stress the LLVM loop vectorizer. The code generated will15///  contain either a single loop or two nested loops.16///17//===----------------------------------------------------------------------===//18 19syntax = "proto2";20 21message Const {22  required int32 val = 1;23}24 25message VarRef {26  // Add an enum for each array in function signature27  enum Arr {28    ARR_A = 0;29    ARR_B = 1;30    ARR_C = 2;31  };32  required Arr arr = 1;33}34 35message BinaryOp {36  enum Op {37    PLUS = 0;38    MINUS = 1;39    MUL = 2;40    XOR = 3;41    AND = 4;42    OR = 5;43    EQ = 6;44    NE = 7;45    LE = 8;46    GE = 9;47    LT = 10;48    GT = 11;49  };50  required Op op = 1;51  required Rvalue left = 2;52  required Rvalue right = 3;53}54 55message Rvalue {56  oneof rvalue_oneof {57    Const cons = 1;58    BinaryOp binop = 2;59    VarRef varref = 3;60  }61}62 63message AssignmentStatement {64  required VarRef varref = 1;65  required Rvalue rvalue = 2;66}67 68message Statement {69  required AssignmentStatement assignment = 1;70}71 72message StatementSeq {73  repeated Statement statements = 1;74}75 76message LoopFunction {77  optional StatementSeq inner_statements = 1;78  required StatementSeq outer_statements = 2;79}80 81package clang_fuzzer;82