1/* This file contains the definitions and documentation for the 2 additional tree codes used in the GNU C compiler (see tree.def 3 for the standard codes). 4 Copyright (C) 1987-2019 Free Software Foundation, Inc. 5 Written by Benjamin Chelf <chelf@codesourcery.com> 6 7This file is part of GCC. 8 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 11Software Foundation; either version 3, or (at your option) any later 12version. 13 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. 18 19You should have received a copy of the GNU General Public License 20along with GCC; see the file COPYING3. If not see 21<http://www.gnu.org/licenses/>. */ 22 23/* Tree nodes used in the C frontend. These are also shared with the 24 C++ and Objective C frontends. */ 25 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 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 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 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 58/* 59Local variables: 60mode:c 61End: 62*/ 63