diff options
Diffstat (limited to 'tools/clang-fuzzer/cxx_loop_proto.proto')
-rw-r--r-- | tools/clang-fuzzer/cxx_loop_proto.proto | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/tools/clang-fuzzer/cxx_loop_proto.proto b/tools/clang-fuzzer/cxx_loop_proto.proto new file mode 100644 index 0000000000000..f2b47ed43d897 --- /dev/null +++ b/tools/clang-fuzzer/cxx_loop_proto.proto @@ -0,0 +1,80 @@ +//===-- 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; + XOR = 3; + AND = 4; + OR = 5; + EQ = 6; + NE = 7; + LE = 8; + GE = 9; + LT = 10; + GT = 11; + }; + 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 Statement { + required AssignmentStatement assignment = 1; +} + +message StatementSeq { + repeated Statement statements = 1; +} + +message LoopFunction { + required StatementSeq statements = 1; +} + +package clang_fuzzer; |