c-common.def (CASE_LABEL): Remove.
authorRichard Henderson <rth@redhat.com>
Wed, 16 Jun 2004 20:51:46 +0000 (13:51 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 16 Jun 2004 20:51:46 +0000 (13:51 -0700)
        * c-common.def (CASE_LABEL): Remove.
        * c-common.c (c_add_case_label): Use CASE_LABEL, not CASE_LABEL_DECL.
        (match_case_to_enum_1): Likewise.
        * c-common.h (c_common_stmt_codes): Remove CASE_LABEL.
        * c-dump.c (c_dump_tree): Likewise.
        * c-gimplify.c (c_gimplify_stmt): Likewise.
        * c-pretty-print.c (pp_c_statement): Likewise.
        * c-semantics.c (build_case_label): Use CASE_LABEL_EXPR.
        * tree.h (CASE_LOW): Update commentary.
cp/
        * parser.c (cp_parser_labeled_statement): Update commentary.
        * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
        * tree.c (mark_local_for_remap_r): Likewise.

From-SVN: r83261

13 files changed:
gcc/ChangeLog
gcc/c-common.c
gcc/c-common.def
gcc/c-common.h
gcc/c-dump.c
gcc/c-gimplify.c
gcc/c-pretty-print.c
gcc/c-semantics.c
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/cp/pt.c
gcc/cp/tree.c
gcc/tree.h

index 3ba6fa70782fe55d31e14fb6945c42cff7466e1a..02bd3ba8ff6b800172b963f9b9a5ea14102238c8 100644 (file)
@@ -1,3 +1,15 @@
+2004-06-16  Richard Henderson  <rth@redhat.com>
+
+       * c-common.def (CASE_LABEL): Remove.
+       * c-common.c (c_add_case_label): Use CASE_LABEL, not CASE_LABEL_DECL.
+       (match_case_to_enum_1): Likewise.
+       * c-common.h (c_common_stmt_codes): Remove CASE_LABEL.
+       * c-dump.c (c_dump_tree): Likewise.
+       * c-gimplify.c (c_gimplify_stmt): Likewise.
+       * c-pretty-print.c (pp_c_statement): Likewise.
+       * c-semantics.c (build_case_label): Use CASE_LABEL_EXPR.
+       * tree.h (CASE_LOW): Update commentary.
+
 2004-06-16  Richard Henderson  <rth@redhat.com>
 
        * c-common.def (ASM_STMT): Remove.
index 3de00cff8697c1c7295cc376e7ecbbe51349a138..6ef83f04640f6a4caa838d420905c00577a5f2c7 100644 (file)
@@ -3770,8 +3770,8 @@ case_compare (splay_tree_key k1, splay_tree_key k2)
    case label was declared using the usual C/C++ syntax, rather than
    the GNU case range extension.  CASES is a tree containing all the
    case ranges processed so far; COND is the condition for the
-   switch-statement itself.  Returns the CASE_LABEL created, or
-   ERROR_MARK_NODE if no CASE_LABEL is created.  */
+   switch-statement itself.  Returns the CASE_LABEL_EXPR created, or
+   ERROR_MARK_NODE if no CASE_LABEL_EXPR is created.  */
 
 tree
 c_add_case_label (splay_tree cases, tree cond, tree low_value,
@@ -3870,7 +3870,7 @@ c_add_case_label (splay_tree cases, tree cond, tree low_value,
   /* If there was an overlap, issue an error.  */
   if (node)
     {
-      tree duplicate = CASE_LABEL_DECL ((tree) node->value);
+      tree duplicate = CASE_LABEL ((tree) node->value);
 
       if (high_value)
        {
@@ -3935,10 +3935,10 @@ match_case_to_enum_1 (tree key, tree type, tree label)
 
   if (TYPE_NAME (type) == 0)
     warning ("%Jcase value `%s' not in enumerated type",
-            CASE_LABEL_DECL (label), buf);
+            CASE_LABEL (label), buf);
   else
     warning ("%Jcase value `%s' not in enumerated type `%T'",
-            CASE_LABEL_DECL (label), buf, type);
+            CASE_LABEL (label), buf, type);
 }
 
 static int
index a78cfc16d3de48c12b15ce1e5abe011f4b0c4f5c..0c9b9f0a0b8e78c00f740881d4cc57292eecc106 100644 (file)
@@ -71,12 +71,6 @@ DEFTREECODE (CONTINUE_STMT, "continue_stmt", 'e', 0)
    SWITCH_COND, SWITCH_BODY and SWITCH_TYPE, respectively.  */
 DEFTREECODE (SWITCH_STMT, "switch_stmt", 'e', 3)
 
-/* 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)
index 6dbb5167f54d4a5ac439054d8e175dcc93fd07a0..740825c21f7d2f1fcdf6e1a1db887f1c576f92bb 100644 (file)
@@ -958,7 +958,6 @@ extern void finish_file     (void);
 #define FOR_BODY(NODE)          TREE_OPERAND (FOR_STMT_CHECK (NODE), 3)
 
 #define SWITCH_TYPE(NODE)      TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 2)
-#define CASE_LABEL_DECL(NODE)   TREE_OPERAND (CASE_LABEL_CHECK (NODE), 2)
 
 /* COMPOUND_STMT accessor. This gives access to the TREE_LIST of
    statements associated with a compound statement. The result is the
@@ -1007,8 +1006,7 @@ enum c_tree_code {
    CLEANUP_STMT,       EXPR_STMT,      COMPOUND_STMT,  \
    DECL_STMT,          IF_STMT,        FOR_STMT,       \
    WHILE_STMT,         DO_STMT,        RETURN_STMT,    \
-   BREAK_STMT,         CONTINUE_STMT,                  \
-   SWITCH_STMT,                CASE_LABEL
+   BREAK_STMT,         CONTINUE_STMT,  SWITCH_STMT
 
 /* TRUE if a code represents a statement.  The front end init
    langhook should take care of initialization of this array.  */
index db03dfb566bfb17988ab77a88f10eeb82d9550c6..9e8280774c2cbb88170661a59d7fde93d21b0974 100644 (file)
@@ -69,14 +69,6 @@ c_dump_tree (void *dump_info, tree t)
       dump_next_stmt (di, t);
       break;
 
-    case CASE_LABEL:
-      /* Note that a case label is not like other statements; there is
-        no way to get the line-number of a case label.  */
-      dump_child ("low", CASE_LOW (t));
-      dump_child ("high", CASE_HIGH (t));
-      dump_next_stmt (di, t);
-      break;
-
     case CLEANUP_STMT:
       dump_stmt (di, t);
       dump_child ("decl", CLEANUP_DECL (t));
index 3b84cd981de5bdc6f8af609027da59d0e52c767e..2e9b4b92b640096353635d500a63fc134ffeef96 100644 (file)
@@ -264,15 +264,6 @@ c_gimplify_stmt (tree *stmt_p)
       ret = gimplify_decl_stmt (&stmt);
       break;
 
-    case CASE_LABEL:
-      {
-       tree label = create_artificial_label ();
-       stmt = build (CASE_LABEL_EXPR, void_type_node,
-                     CASE_LOW (stmt), CASE_HIGH (stmt), label);
-       ret = GS_OK;
-      }
-      break;
-
     case CONTINUE_STMT:
       stmt = build_bc_goto (bc_continue);
       ret = GS_OK;
index e5eb8e3dbb0cd53d502be59bb2a3575e6e383654..a2ef2048874981c08b4b2bb369707ded991ad6eb 100644 (file)
@@ -1907,33 +1907,6 @@ pp_c_statement (c_pretty_printer *pp, tree stmt)
         pp_c_right_brace (pp);
         pp_needs_newline (pp) = true;
       }
-      break;
-
-       /* labeled-statement:
-             identifier : statement
-             case constant-expression : statement
-             default : statement   */
-    case CASE_LABEL:
-      if (pp_needs_newline (pp))
-        pp_newline_and_indent (pp, -3);
-      else
-        pp_indentation (pp) -= 3;
-      if (CASE_LOW (stmt) == NULL_TREE)
-       pp_identifier (pp, "default");
-      else
-       {
-         pp_c_identifier (pp, "case");
-         pp_c_whitespace (pp);
-         pp_conditional_expression (pp, CASE_LOW (stmt));
-         if (CASE_HIGH (stmt))
-           {
-             pp_identifier (pp, "...");
-             pp_conditional_expression (pp, CASE_HIGH (stmt));
-           }
-       }
-      pp_colon (pp);
-      pp_indentation (pp) += 3;
-      pp_needs_newline (pp) = true;
       break;
 
       /* compound-statement:
index 8a67c67a33de1ceb9fc12106525cd743867400b5..681887f0d02dcdf89ee6668085d26a672363d1a8 100644 (file)
@@ -297,12 +297,12 @@ build_continue_stmt (void)
   return (build_stmt (CONTINUE_STMT));
 }
 
-/* Create a CASE_LABEL tree node and return it.  */
+/* Create a CASE_LABEL_EXPR tree node and return it.  */
 
 tree
 build_case_label (tree low_value, tree high_value, tree label_decl)
 {
-  return build_stmt (CASE_LABEL, low_value, high_value, label_decl);
+  return build_stmt (CASE_LABEL_EXPR, low_value, high_value, label_decl);
 }
 
 /* We're about to expand T, a statement.  Set up appropriate context
index 90636b0cc5c32a2b7a145939bf38ba0073f21412..73aec988d993d80d80f04b1206da5bd61eb4d476 100644 (file)
@@ -1,3 +1,9 @@
+2004-06-16  Richard Henderson  <rth@redhat.com>
+
+       * parser.c (cp_parser_labeled_statement): Update commentary.
+       * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
+       * tree.c (mark_local_for_remap_r): Likewise.
+
 2004-06-16  Richard Henderson  <rth@redhat.com>
 
        * parser.c (cp_parser_asm_definition): Update commentary.
index 863c9a29582b5304484dae9e44a67cc295449dd6..ced8e6aac80c5c1fcc3569c0b14b74505ed07ff7 100644 (file)
@@ -5720,8 +5720,8 @@ cp_parser_statement (cp_parser* parser, tree in_statement_expr)
    labeled-statement:
      case constant-expression ... constant-expression : statement
 
-   Returns the new CASE_LABEL, for a `case' or `default' label.  For
-   an ordinary label, returns a LABEL_EXPR.  */
+   Returns the new CASE_LABEL_EXPR, for a `case' or `default' label.
+   For an ordinary label, returns a LABEL_EXPR.  */
 
 static tree
 cp_parser_labeled_statement (cp_parser* parser, tree in_statement_expr)
index a1e0a37d8c713f73b95322558ad09b97751885b5..57fb87156d866e74729f5253652a2cbe69190093 100644 (file)
@@ -7972,7 +7972,7 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl)
       }
       break;
 
-    case CASE_LABEL:
+    case CASE_LABEL_EXPR:
       prep_stmt (t);
       finish_case_label (tsubst_expr (CASE_LOW (t), args, complain, in_decl),
                         tsubst_expr (CASE_HIGH (t), args, complain,
index 86c585b2e44f403719d93ff1ce1acd587c3e1291..c06810e0a3e97a7e3fb977fe98213581b2ad69c2 100644 (file)
@@ -2221,8 +2221,8 @@ mark_local_for_remap_r (tree* tp,
   else if (TREE_CODE (t) == TARGET_EXPR
           && nonstatic_local_decl_p (TREE_OPERAND (t, 0)))
     decl = TREE_OPERAND (t, 0);
-  else if (TREE_CODE (t) == CASE_LABEL)
-    decl = CASE_LABEL_DECL (t);
+  else if (TREE_CODE (t) == CASE_LABEL_EXPR)
+    decl = CASE_LABEL (t);
   else
     decl = NULL_TREE;
 
index aa1511fc4de8effc7aa58cf31336d5b26eb374d1..b43899717f0bdfe913a63451e9c4d8d5c7b5203f 100644 (file)
@@ -1066,7 +1066,7 @@ struct tree_vec GTY(())
 #define SWITCH_BODY(NODE)       TREE_OPERAND ((NODE), 1)
 #define SWITCH_LABELS(NODE)     TREE_OPERAND ((NODE), 2)
 
-/* CASE_LABEL accessors. These give access to the high and low values
+/* CASE_LABEL_EXPR accessors. These give access to the high and low values
    of a case label, respectively.  */
 #define CASE_LOW(NODE)          TREE_OPERAND ((NODE), 0)
 #define CASE_HIGH(NODE)         TREE_OPERAND ((NODE), 1)