]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/c-family/c-common.def
Update copyright years.
[thirdparty/gcc.git] / gcc / c-family / c-common.def
CommitLineData
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 7This file is part of GCC.
d7e7759d 8
1322177d
LB
9GCC is free software; you can redistribute it and/or modify it under
10the terms of the GNU General Public License as published by the Free
9dcd6f09 11Software Foundation; either version 3, or (at your option) any later
1322177d 12version.
d7e7759d 13
1322177d
LB
14GCC is distributed in the hope that it will be useful, but WITHOUT ANY
15WARRANTY; without even the implied warranty of MERCHANTABILITY or
16FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17for more details.
d7e7759d
BC
18
19You should have received a copy of the GNU General Public License
9dcd6f09
NC
20along 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. */
39DEFTREECODE (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. */
46DEFTREECODE (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. */
52DEFTREECODE (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. */
56DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", tcc_expression, 1)
57
83f83ddf
MP
58/* Like above, but enclosed in parentheses. Used to suppress warnings. */
59DEFTREECODE (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. */
64DEFTREECODE (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. */
68DEFTREECODE (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. */
72DEFTREECODE (DO_STMT, "do_stmt", tcc_statement, 2)
73
74/* Used to represent a 'break' statement. */
75DEFTREECODE (BREAK_STMT, "break_stmt", tcc_statement, 0)
76
77/* Used to represent a 'continue' statement. */
78DEFTREECODE (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. */
83DEFTREECODE (SWITCH_STMT, "switch_stmt", tcc_statement, 4)
84
de097a2d
JM
85/*
86Local variables:
87mode:c
88End:
89*/