1*e4b17023SJohn Marino/* This file contains the definitions and documentation for the 2*e4b17023SJohn Marino additional tree codes used in the GNU C compiler (see tree.def 3*e4b17023SJohn Marino for the standard codes). 4*e4b17023SJohn Marino Copyright (C) 1987, 1988, 1990, 1993, 1997, 1998, 5*e4b17023SJohn Marino 1999, 2000, 2001, 2004, 2005, 2007, 2009, 2010 6*e4b17023SJohn Marino Free Software Foundation, Inc. 7*e4b17023SJohn Marino Written by Benjamin Chelf <chelf@codesourcery.com> 8*e4b17023SJohn Marino 9*e4b17023SJohn MarinoThis file is part of GCC. 10*e4b17023SJohn Marino 11*e4b17023SJohn MarinoGCC is free software; you can redistribute it and/or modify it under 12*e4b17023SJohn Marinothe terms of the GNU General Public License as published by the Free 13*e4b17023SJohn MarinoSoftware Foundation; either version 3, or (at your option) any later 14*e4b17023SJohn Marinoversion. 15*e4b17023SJohn Marino 16*e4b17023SJohn MarinoGCC is distributed in the hope that it will be useful, but WITHOUT ANY 17*e4b17023SJohn MarinoWARRANTY; without even the implied warranty of MERCHANTABILITY or 18*e4b17023SJohn MarinoFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 19*e4b17023SJohn Marinofor more details. 20*e4b17023SJohn Marino 21*e4b17023SJohn MarinoYou should have received a copy of the GNU General Public License 22*e4b17023SJohn Marinoalong with GCC; see the file COPYING3. If not see 23*e4b17023SJohn Marino<http://www.gnu.org/licenses/>. */ 24*e4b17023SJohn Marino 25*e4b17023SJohn Marino/* Tree nodes used in the C frontend. These are also shared with the 26*e4b17023SJohn Marino C++ and Objective C frontends. */ 27*e4b17023SJohn Marino 28*e4b17023SJohn Marino/* A C_MAYBE_CONST_EXPR, currently only used for C and Objective C, 29*e4b17023SJohn Marino tracks information about constancy of an expression and VLA type 30*e4b17023SJohn Marino sizes or VM expressions from typeof that need to be evaluated 31*e4b17023SJohn Marino before the main expression. It is used during parsing and removed 32*e4b17023SJohn Marino in c_fully_fold. C_MAYBE_CONST_EXPR_PRE is the expression to 33*e4b17023SJohn Marino evaluate first, if not NULL; C_MAYBE_CONST_EXPR_EXPR is the main 34*e4b17023SJohn Marino expression. If C_MAYBE_CONST_EXPR_INT_OPERANDS is set then the 35*e4b17023SJohn Marino expression may be used in an unevaluated part of an integer 36*e4b17023SJohn Marino constant expression, but not in an evaluated part. If 37*e4b17023SJohn Marino C_MAYBE_CONST_EXPR_NON_CONST is set then the expression contains 38*e4b17023SJohn Marino something that cannot occur in an evaluated part of a constant 39*e4b17023SJohn Marino expression (or outside of sizeof in C90 mode); otherwise it does 40*e4b17023SJohn Marino not. */ 41*e4b17023SJohn MarinoDEFTREECODE (C_MAYBE_CONST_EXPR, "c_maybe_const_expr", tcc_expression, 2) 42*e4b17023SJohn Marino 43*e4b17023SJohn Marino/* An EXCESS_PRECISION_EXPR, currently only used for C and Objective 44*e4b17023SJohn Marino C, represents an expression evaluated in greater range or precision 45*e4b17023SJohn Marino than its type. The type of the EXCESS_PRECISION_EXPR is the 46*e4b17023SJohn Marino semantic type while the operand represents what is actually being 47*e4b17023SJohn Marino evaluated. */ 48*e4b17023SJohn MarinoDEFTREECODE (EXCESS_PRECISION_EXPR, "excess_precision_expr", tcc_expression, 1) 49*e4b17023SJohn Marino 50*e4b17023SJohn Marino/* Used to represent a user-defined literal. 51*e4b17023SJohn Marino The operands are an IDENTIFIER for the suffix, the VALUE of the literal, 52*e4b17023SJohn Marino and for numeric literals the original string representation of the 53*e4b17023SJohn Marino number. */ 54*e4b17023SJohn MarinoDEFTREECODE (USERDEF_LITERAL, "userdef_literal", tcc_exceptional, 3) 55*e4b17023SJohn Marino 56*e4b17023SJohn Marino/* 57*e4b17023SJohn MarinoLocal variables: 58*e4b17023SJohn Marinomode:c 59*e4b17023SJohn MarinoEnd: 60*e4b17023SJohn Marino*/ 61