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