OSDN Git Service

PR middle-end/42068
[pf3gnuchains/gcc-fork.git] / gcc / c-common.def
index 3282cc6..1c59363 100644 (file)
@@ -1,15 +1,15 @@
 /* This file contains the definitions and documentation for the
 /* This file contains the definitions and documentation for the
-   additional tree codes used in the GNU C++ compiler (see tree.def
+   additional tree codes used in the GNU C compiler (see tree.def
    for the standard codes).
    Copyright (C) 1987, 1988, 1990, 1993, 1997, 1998,
    for the standard codes).
    Copyright (C) 1987, 1988, 1990, 1993, 1997, 1998,
-   1999, 2000, 2001 Free Software Foundation, Inc.
+   1999, 2000, 2001, 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
    Written by Benjamin Chelf <chelf@codesourcery.com>
 
 This file is part of GCC.
 
 GCC is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
    Written by Benjamin Chelf <chelf@codesourcery.com>
 
 This file is part of GCC.
 
 GCC is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
+Software Foundation; either version 3, or (at your option) any later
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -18,98 +18,33 @@ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 for more details.
 
 You should have received a copy of the GNU General Public License
 for more details.
 
 You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING.  If not, write to the Free
-Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA.  */
-
-/* Tree nodes relevant to both C and C++. These were originally in
-cp-tree.def in the cp subdir.  */
-
-DEFTREECODE (SIZEOF_EXPR, "sizeof_expr", '1', 1)
-DEFTREECODE (ARROW_EXPR, "arrow_expr", 'e', 1)
-DEFTREECODE (ALIGNOF_EXPR, "alignof_expr", '1', 1)
-
-/* Used to represent an expression statement.  Use `EXPR_STMT_EXPR' to
-   obtain the expression.  */
-DEFTREECODE (EXPR_STMT, "expr_stmt", 'e', 1)
-
-/* Used to represent a brace-enclosed block.  The operand is
-   COMPOUND_BODY.  */
-DEFTREECODE (COMPOUND_STMT, "compound_stmt", 'e', 1)
-
-/* Used to represent a local declaration. The operand is
-   DECL_STMT_DECL.  */
-DEFTREECODE (DECL_STMT, "decl_stmt", 'e', 1)
-
-/* Represents an 'if' statement. The operands are IF_COND,
-   THEN_CLAUSE, and ELSE_CLAUSE, respectively.  */
-DEFTREECODE (IF_STMT, "if_stmt", 'e', 3)
-
-/* Used to represent a `for' statement. The operands are
-   FOR_INIT_STMT, FOR_COND, FOR_EXPR, and FOR_BODY, respectively.  */
-DEFTREECODE (FOR_STMT, "for_stmt", 'e', 4)
-
-/* Used to represent a 'while' statement. The operands are WHILE_COND
-   and WHILE_BODY, respectively.  */
-DEFTREECODE (WHILE_STMT, "while_stmt", 'e', 2)
-
-/* Used to represent a 'do' statement. The operands are DO_BODY and
-   DO_COND, respectively.  */
-DEFTREECODE (DO_STMT, "do_stmt", 'e', 2)
-
-/* Used to represent a 'return' statement. The operand is
-   RETURN_STMT_EXPR.  */
-DEFTREECODE (RETURN_STMT, "return_stmt", 'e', 1)
-
-/* Used to represent a 'break' statement.  */
-DEFTREECODE (BREAK_STMT, "break_stmt", 'e', 0)
-
-/* Used to represent a 'continue' statement.  */
-DEFTREECODE (CONTINUE_STMT, "continue_stmt", 'e', 0)
-
-/* Used to represent a 'switch' statement. The operands are
-   SWITCH_COND, SWITCH_BODY and SWITCH_TYPE, respectively.  */
-DEFTREECODE (SWITCH_STMT, "switch_stmt", 'e', 3)
-
-/* Used to represent a 'goto' statement. The operand is GOTO_DESTINATION.  */
-DEFTREECODE (GOTO_STMT, "goto_stmt", 'e', 1)
-
-/* Used to represent a 'label' statement. The operand is a LABEL_DECL
-   and can be obtained through the macro LABEL_STMT_LABEL.  */
-DEFTREECODE (LABEL_STMT, "label_stmt", 'e', 1)
-
-/* Used to represent an inline assembly statement.  */
-DEFTREECODE (ASM_STMT, "asm_stmt", 'e', 4)
-
-/* A SCOPE_STMT marks the beginning or end of a scope.  If
-   SCOPE_BEGIN_P holds, then this is the start of a scope.  If
-   SCOPE_END_P holds, then this is the end of a scope.  If
-   SCOPE_NULLIFIED_P holds then there turned out to be no variables in
-   this scope.  The SCOPE_STMT_BLOCK is the BLOCK containing the
-   variables declared in this scope.  */
-DEFTREECODE (SCOPE_STMT, "scope_stmt", 'e', 1)
-
-/* Used to represent a CASE_LABEL. The operands are CASE_LOW and
-   CASE_HIGH, respectively. If CASE_LOW is NULL_TREE, the label is a
-   'default' label. If CASE_HIGH is NULL_TREE, the label is a normal case
-   label.  The CASE_LABEL_DECL is a LABEL_DECL for this node.  */
-DEFTREECODE (CASE_LABEL, "case_label", 'e', 3)
-
-/* A STMT_EXPR represents a statement-expression.  The
-   STMT_EXPR_STMT is the statement given by the expression.  */
-DEFTREECODE (STMT_EXPR, "stmt_expr", 'e', 1)
-
-/* A COMPOUND_LITERAL_EXPR represents a C99 compound literal.  The
-   COMPOUND_LITERAL_EXPR_DECL_STMT is the a DECL_STMT containing the decl
-   for the anonymous object represented by the COMPOUND_LITERAL;
-   the DECL_INITIAL of that decl is the CONSTRUCTOR that initializes
-   the compound literal.  */
-DEFTREECODE (COMPOUND_LITERAL_EXPR, "compound_literal_expr", 'e', 1)
-
-/* A CLEANUP_STMT marks the point at which a declaration is fully
-   constructed.  If, after this point, the CLEANUP_DECL goes out of
-   scope, the CLEANUP_EXPR must be run.  */
-DEFTREECODE (CLEANUP_STMT, "cleanup_stmt", 'e', 2)
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Tree nodes used in the C frontend.  These are also shared with the
+   C++ and Objective C frontends.  */
+
+/* A C_MAYBE_CONST_EXPR, currently only used for C and Objective C,
+   tracks information about constancy of an expression and VLA type
+   sizes or VM expressions from typeof that need to be evaluated
+   before the main expression.  It is used during parsing and removed
+   in c_fully_fold.  C_MAYBE_CONST_EXPR_PRE is the expression to
+   evaluate first, if not NULL; C_MAYBE_CONST_EXPR_EXPR is the main
+   expression.  If C_MAYBE_CONST_EXPR_INT_OPERANDS is set then the
+   expression may be used in an unevaluated part of an integer
+   constant expression, but not in an evaluated part.  If
+   C_MAYBE_CONST_EXPR_NON_CONST is set then the expression contains
+   something that cannot occur in an evaluated part of a constant
+   expression (or outside of sizeof in C90 mode); otherwise it does
+   not.  */
+DEFTREECODE (C_MAYBE_CONST_EXPR, "c_maybe_const_expr", tcc_expression, 2)
+
+/* An EXCESS_PRECISION_EXPR, currently only used for C and Objective
+   C, represents an expression evaluated in greater range or precision
+   than its type.  The type of the EXCESS_PRECISION_EXPR is the
+   semantic type while the operand represents what is actually being
+   evaluated.  */
+DEFTREECODE (EXCESS_PRECISION_EXPR, "excess_precision_expr", tcc_expression, 1)
 
 /*
 Local variables:
 
 /*
 Local variables: