]>
Commit | Line | Data |
---|---|---|
d7e7759d | 1 | /* This file contains the definitions and documentation for the |
934790cc | 2 | additional tree codes used in the GNU C compiler (see tree.def |
d7e7759d | 3 | for the standard codes). |
7adcbafe | 4 | Copyright (C) 1987-2022 Free Software Foundation, Inc. |
d7e7759d BC |
5 | Written by Benjamin Chelf <chelf@codesourcery.com> |
6 | ||
1322177d | 7 | This file is part of GCC. |
d7e7759d | 8 | |
1322177d LB |
9 | GCC is free software; you can redistribute it and/or modify it under |
10 | the terms of the GNU General Public License as published by the Free | |
9dcd6f09 | 11 | Software Foundation; either version 3, or (at your option) any later |
1322177d | 12 | version. |
d7e7759d | 13 | |
1322177d LB |
14 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY |
15 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
16 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
17 | for more details. | |
d7e7759d BC |
18 | |
19 | You should have received a copy of the GNU General Public License | |
9dcd6f09 NC |
20 | along with GCC; see the file COPYING3. If not see |
21 | <http://www.gnu.org/licenses/>. */ | |
d7e7759d | 22 | |
934790cc ILT |
23 | /* Tree nodes used in the C frontend. These are also shared with the |
24 | C++ and Objective C frontends. */ | |
35b1567d | 25 | |
928c19bb JM |
26 | /* A C_MAYBE_CONST_EXPR, currently only used for C and Objective C, |
27 | tracks information about constancy of an expression and VLA type | |
28 | sizes or VM expressions from typeof that need to be evaluated | |
29 | before the main expression. It is used during parsing and removed | |
30 | in c_fully_fold. C_MAYBE_CONST_EXPR_PRE is the expression to | |
31 | evaluate first, if not NULL; C_MAYBE_CONST_EXPR_EXPR is the main | |
32 | expression. If C_MAYBE_CONST_EXPR_INT_OPERANDS is set then the | |
33 | expression may be used in an unevaluated part of an integer | |
34 | constant expression, but not in an evaluated part. If | |
35 | C_MAYBE_CONST_EXPR_NON_CONST is set then the expression contains | |
36 | something that cannot occur in an evaluated part of a constant | |
37 | expression (or outside of sizeof in C90 mode); otherwise it does | |
38 | not. */ | |
39 | DEFTREECODE (C_MAYBE_CONST_EXPR, "c_maybe_const_expr", tcc_expression, 2) | |
40 | ||
8ce94e44 JM |
41 | /* An EXCESS_PRECISION_EXPR, currently only used for C and Objective |
42 | C, represents an expression evaluated in greater range or precision | |
43 | than its type. The type of the EXCESS_PRECISION_EXPR is the | |
44 | semantic type while the operand represents what is actually being | |
45 | evaluated. */ | |
46 | DEFTREECODE (EXCESS_PRECISION_EXPR, "excess_precision_expr", tcc_expression, 1) | |
47 | ||
3ce4f9e4 ESR |
48 | /* Used to represent a user-defined literal. |
49 | The operands are an IDENTIFIER for the suffix, the VALUE of the literal, | |
50 | and for numeric literals the original string representation of the | |
51 | number. */ | |
52 | DEFTREECODE (USERDEF_LITERAL, "userdef_literal", tcc_exceptional, 3) | |
53 | ||
1a4049e7 JJ |
54 | /* Represents a 'sizeof' expression during C++ template expansion, |
55 | or for the purpose of -Wsizeof-pointer-memaccess warning. */ | |
56 | DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", tcc_expression, 1) | |
57 | ||
83f83ddf MP |
58 | /* Like above, but enclosed in parentheses. Used to suppress warnings. */ |
59 | DEFTREECODE (PAREN_SIZEOF_EXPR, "paren_sizeof_expr", tcc_expression, 1) | |
60 | ||
cba079f3 SL |
61 | /* Used to represent a `for' statement. The operands are |
62 | FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY, and FOR_SCOPE, | |
63 | respectively. */ | |
64 | DEFTREECODE (FOR_STMT, "for_stmt", tcc_statement, 5) | |
65 | ||
66 | /* Used to represent a 'while' statement. The operands are WHILE_COND | |
67 | and WHILE_BODY, respectively. */ | |
68 | DEFTREECODE (WHILE_STMT, "while_stmt", tcc_statement, 2) | |
69 | ||
70 | /* Used to represent a 'do' statement. The operands are DO_COND and | |
71 | DO_BODY, respectively. */ | |
72 | DEFTREECODE (DO_STMT, "do_stmt", tcc_statement, 2) | |
73 | ||
74 | /* Used to represent a 'break' statement. */ | |
75 | DEFTREECODE (BREAK_STMT, "break_stmt", tcc_statement, 0) | |
76 | ||
77 | /* Used to represent a 'continue' statement. */ | |
78 | DEFTREECODE (CONTINUE_STMT, "continue_stmt", tcc_statement, 0) | |
79 | ||
80 | /* Used to represent a 'switch' statement. The operands are | |
81 | SWITCH_STMT_COND, SWITCH_STMT_BODY, SWITCH_STMT_TYPE, and | |
82 | SWITCH_STMT_SCOPE, respectively. */ | |
83 | DEFTREECODE (SWITCH_STMT, "switch_stmt", tcc_statement, 4) | |
84 | ||
de097a2d JM |
85 | /* |
86 | Local variables: | |
87 | mode:c | |
88 | End: | |
89 | */ |