1 |
707 |
jeremybenn |
/* 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
|
8 |
|
|
|
9 |
|
|
This file is part of GCC.
|
10 |
|
|
|
11 |
|
|
GCC is free software; you can redistribute it and/or modify it under
|
12 |
|
|
the terms of the GNU General Public License as published by the Free
|
13 |
|
|
Software Foundation; either version 3, or (at your option) any later
|
14 |
|
|
version.
|
15 |
|
|
|
16 |
|
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
17 |
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
18 |
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
19 |
|
|
for more details.
|
20 |
|
|
|
21 |
|
|
You should have received a copy of the GNU General Public License
|
22 |
|
|
along with GCC; see the file COPYING3. If not see
|
23 |
|
|
. */
|
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. */
|
41 |
|
|
DEFTREECODE (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. */
|
48 |
|
|
DEFTREECODE (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. */
|
54 |
|
|
DEFTREECODE (USERDEF_LITERAL, "userdef_literal", tcc_exceptional, 3)
|
55 |
|
|
|
56 |
|
|
/*
|
57 |
|
|
Local variables:
|
58 |
|
|
mode:c
|
59 |
|
|
End:
|
60 |
|
|
*/
|