[TySan] Don't report globals with incomplete types. (#121922)
[llvm-project.git] / clang / tools / clang-fuzzer / cxx_proto.proto
blobeaf69d18443633c82a3ad0e6281e2ff47b14cccb
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-exception
6 //
7 //===----------------------------------------------------------------------===//
8 ///
9 /// \file
10 /// This file describes a subset of C++ as a protobuf.  It is used to
11 ///  more easily find interesting inputs for fuzzing Clang.
12 ///
13 //===----------------------------------------------------------------------===//
15 syntax = "proto2";
17 message VarRef {
18   required int32 varnum = 1;
21 message Lvalue {
22   required VarRef varref = 1;
25 message Const {
26   required int32 val = 1;
29 message 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;
51 message Rvalue {
52   oneof rvalue_oneof {
53     VarRef varref = 1;
54     Const cons = 2;
55     BinaryOp binop = 3;
56   }
59 message AssignmentStatement {
60   required Lvalue lvalue = 1;
61   required Rvalue rvalue = 2;
65 message IfElse {
66   required Rvalue cond = 1;
67   required StatementSeq if_body = 2;
68   required StatementSeq else_body = 3;
71 message While {
72   required Rvalue cond = 1;
73   required StatementSeq body = 2;
76 message Statement {
77   oneof stmt_oneof {
78     AssignmentStatement assignment = 1;
79     IfElse              ifelse     = 2;
80     While               while_loop = 3;
81   }
84 message StatementSeq {
85   repeated Statement statements = 1;
88 message Function {
89   required StatementSeq statements = 1;
92 package clang_fuzzer;