//===-- cxx_loop_proto.proto - Protobuf description of C++ with for loops -===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
///
/// \file
///  This file describes a subset of C++ as a protobuf. It is used to
///  more easily find interesting inputs for fuzzing Clang. This subset
///  differs from the one defined in cxx_proto.proto by eliminating while
///  loops and conditionals. The goal is that the C++ code generated will be
///  more likely to stress the LLVM loop vectorizer.
///
//===----------------------------------------------------------------------===//

syntax = "proto2";

message Const {
  required int32 val = 1;
}

message VarRef {
  // Add an enum for each array in function signature
  enum Arr {
    ARR_A = 0;
    ARR_B = 1;
    ARR_C = 2;
  };
  required Arr arr = 1;
}

message BinaryOp {
  enum Op {
    PLUS = 0;
    MINUS = 1;
    MUL = 2;
    DIV = 3;
    MOD = 4;
    XOR = 5;
    AND = 6;
    OR = 7;
    EQ = 8;
    NE = 9;
    LE = 10;
    GE = 11;
    LT = 12;
    GT = 13;
  };
  required Op op = 1;
  required Rvalue left = 2;
  required Rvalue right = 3;
}

message Rvalue {
  oneof rvalue_oneof {
    Const cons = 1;
    BinaryOp binop = 2;
    VarRef varref = 3;
  }
}

message AssignmentStatement {
  required VarRef varref = 1;
  required Rvalue rvalue = 2;
}

message IfElse {
  required Rvalue cond = 1;
  required StatementSeq if_body = 2;
  required StatementSeq else_body = 3;
}

message Statement {
  required AssignmentStatement assignment = 1;
}

message StatementSeq {
  repeated Statement statements = 1;
}

message LoopFunction {
  required StatementSeq statements = 1;
}

package clang_fuzzer;
