make CASE_LABEL_EXPR not abuse TREE_CHAIN
authorNathan Froyd <froydnj@codesourcery.com>
Tue, 10 May 2011 19:52:39 +0000 (19:52 +0000)
committerNathan Froyd <froydnj@gcc.gnu.org>
Tue, 10 May 2011 19:52:39 +0000 (19:52 +0000)
make CASE_LABEL_EXPR not abuse TREE_CHAIN
* tree.def (CASE_LABEL_EXPR): Add an operand.
* tree.h (CASE_CHAIN): Use TREE_OPERAND instead of TREE_CHAIN.

From-SVN: r173633

gcc/ChangeLog
gcc/tree.def
gcc/tree.h

index 410bc26..671cc54 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-10  Nathan Froyd  <froydnj@codesourcery.com>
+
+       * tree.def (CASE_LABEL_EXPR): Add an operand.
+       * tree.h (CASE_CHAIN): Use TREE_OPERAND instead of TREE_CHAIN.
+
 2011-05-10  Joseph Myers  <joseph@codesourcery.com>
 
        * c-decl.c (c_override_global_bindings_to_false): Remove.
index eb94ad2..9c6606d 100644 (file)
@@ -863,7 +863,7 @@ DEFTREECODE (SWITCH_EXPR, "switch_expr", tcc_statement, 3)
    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.  CASE_LABEL is the corresponding LABEL_DECL.  */
-DEFTREECODE (CASE_LABEL_EXPR, "case_label_expr", tcc_statement, 3)
+DEFTREECODE (CASE_LABEL_EXPR, "case_label_expr", tcc_statement, 4)
 
 /* Used to represent an inline assembly statement.  ASM_STRING returns a
    STRING_CST for the instruction (e.g., "mov x, y"). ASM_OUTPUTS,
index 4cf1730..529613c 100644 (file)
@@ -1689,7 +1689,7 @@ extern void protected_set_expr_location (tree, location_t);
 #define CASE_LOW(NODE)                 TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 0)
 #define CASE_HIGH(NODE)                TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 1)
 #define CASE_LABEL(NODE)               TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 2)
-#define CASE_CHAIN(NODE)               TREE_CHAIN (CASE_LABEL_EXPR_CHECK (NODE))
+#define CASE_CHAIN(NODE)               TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 3)
 
 /* The operands of a TARGET_MEM_REF.  Operands 0 and 1 have to match
    corresponding MEM_REF operands.  */