OSDN Git Service

./
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Apr 2005 19:59:16 +0000 (19:59 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Apr 2005 19:59:16 +0000 (19:59 +0000)
* c-common.def: Remove STMT_EXPR (moved to cp/cp-tree.def).
* c-common.h (STMT_EXPR_STMT): Don't define.
(STMT_EXPR_NO_SCOPE): Don't define.
* c-dump.c (c_dump_tree): Don't handle STMT_EXPR.
* c-pretty-print.c (pp_c_primary_expression): Likewise.
(pp_c_expression): Likewise.
cp/
* cp-tree.def: Add STMT_EXPR.
* cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
(STMT_EXPR_STMT): Define.
* cxx-pretty-print.c (pp_cxx_primary_expression): Handle
STMT_EXPR.
(pp_cxx_expression): Likewise.
(pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
* dump.c (cp_dump_tree): Handle STMT_EXPR.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98469 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-common.def
gcc/c-common.h
gcc/c-dump.c
gcc/c-pretty-print.c
gcc/cp/ChangeLog
gcc/cp/cp-tree.def
gcc/cp/cp-tree.h
gcc/cp/cxx-pretty-print.c
gcc/cp/dump.c

index 74b8e35..4181cbe 100644 (file)
@@ -1,3 +1,12 @@
+2005-04-20  Ian Lance Taylor  <ian@airs.com>
+
+       * c-common.def: Remove STMT_EXPR (moved to cp/cp-tree.def).
+       * c-common.h (STMT_EXPR_STMT): Don't define.
+       (STMT_EXPR_NO_SCOPE): Don't define.
+       * c-dump.c (c_dump_tree): Don't handle STMT_EXPR.
+       * c-pretty-print.c (pp_c_primary_expression): Likewise.
+       (pp_c_expression): Likewise.
+
 2005-04-20  Richard Henderson  <rth@redhat.com>
 
        PR target/21100
index b352364..4f34a70 100644 (file)
@@ -29,10 +29,6 @@ cp-tree.def in the cp subdir.  */
    obtain the expression.  */
 DEFTREECODE (EXPR_STMT, "expr_stmt", tcc_expression, 1)
 
-/* A STMT_EXPR represents a statement-expression.  The
-   STMT_EXPR_STMT is the statement given by the expression.  */
-DEFTREECODE (STMT_EXPR, "stmt_expr", tcc_expression, 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;
index 9d98ffb..80de15d 100644 (file)
@@ -30,7 +30,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
    0: TREE_NEGATED_INT (in INTEGER_CST).
       IDENTIFIER_MARKED (used by search routines).
       DECL_PRETTY_FUNCTION_P (in VAR_DECL)
-      STMT_EXPR_NO_SCOPE (in STMT_EXPR)
    1: C_DECLARED_LABEL_FLAG (in LABEL_DECL)
       STMT_IS_FULL_EXPR_P (in _STMT)
       STATEMENT_LIST_STMT_EXPR (in STATEMENT_LIST)
@@ -713,13 +712,6 @@ extern void finish_file    (void);
    expression statement.  */
 #define EXPR_STMT_EXPR(NODE)    TREE_OPERAND (EXPR_STMT_CHECK (NODE), 0)
 
-/* STMT_EXPR accessor.  */
-#define STMT_EXPR_STMT(NODE)    TREE_OPERAND (STMT_EXPR_CHECK (NODE), 0)
-
-/* Nonzero if this statement-expression does not have an associated scope.  */
-#define STMT_EXPR_NO_SCOPE(NODE) \
-   TREE_LANG_FLAG_0 (STMT_EXPR_CHECK (NODE))
-
 /* COMPOUND_LITERAL_EXPR accessors.  */
 #define COMPOUND_LITERAL_EXPR_DECL_STMT(NODE)          \
   TREE_OPERAND (COMPOUND_LITERAL_EXPR_CHECK (NODE), 0)
index 09850e6..1b1bb7f 100644 (file)
@@ -59,10 +59,6 @@ c_dump_tree (void *dump_info, tree t)
       dump_child ("expr", EXPR_STMT_EXPR (t));
       break;
 
-    case STMT_EXPR:
-      dump_child ("stmt", STMT_EXPR_STMT (t));
-      break;
-
     default:
       break;
     }
index 24220ce..811a7ba 100644 (file)
@@ -1013,12 +1013,6 @@ pp_c_primary_expression (c_pretty_printer *pp, tree e)
       pp_c_right_paren (pp);
       break;
 
-    case STMT_EXPR:
-      pp_c_left_paren (pp);
-      pp_statement (pp, STMT_EXPR_STMT (e));
-      pp_c_right_paren (pp);
-      break;
-
     default:
       /* FIXME:  Make sure we won't get into an infinie loop.  */
       pp_c_left_paren (pp);
@@ -1786,7 +1780,6 @@ pp_c_expression (c_pretty_printer *pp, tree e)
     case FIELD_DECL:
     case LABEL_DECL:
     case ERROR_MARK:
-    case STMT_EXPR:
       pp_primary_expression (pp, e);
       break;
 
index b053298..d8e77cc 100644 (file)
@@ -1,3 +1,14 @@
+2005-04-20  Ian Lance Taylor  <ian@airs.com>
+
+       * cp-tree.def: Add STMT_EXPR.
+       * cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
+       (STMT_EXPR_STMT): Define.
+       * cxx-pretty-print.c (pp_cxx_primary_expression): Handle
+       STMT_EXPR.
+       (pp_cxx_expression): Likewise.
+       (pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
+       * dump.c (cp_dump_tree): Handle STMT_EXPR.
+
 2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>
 
        * decl.c (expand_static_init): Call build2 and build3 instead
index ffcc9a5..e50bf3c 100644 (file)
@@ -331,6 +331,11 @@ DEFTREECODE (ARROW_EXPR, "arrow_expr", tcc_expression, 1)
    expansion.  */
 DEFTREECODE (ALIGNOF_EXPR, "alignof_expr", tcc_unary, 1)
 
+/* A STMT_EXPR represents a statement-expression during template
+   expansion.  This is the GCC extension { ( ... ) }.  The
+   STMT_EXPR_STMT is the statement given by the expression.  */
+DEFTREECODE (STMT_EXPR, "stmt_expr", tcc_expression, 1)
+
 /*
 Local variables:
 mode:c
index 3765a4b..a27ee19 100644 (file)
@@ -47,6 +47,7 @@ struct diagnostic_context;
       KOENIG_LOOKUP_P (in CALL_EXPR)
       STATEMENT_LIST_NO_SCOPE (in STATEMENT_LIST).
       EXPR_STMT_STMT_EXPR_RESULT (in EXPR_STMT)
+      STMT_EXPR_NO_SCOPE (in STMT_EXPR)
       BIND_EXPR_TRY_BLOCK (in BIND_EXPR)
       TYPENAME_IS_ENUM_P (in TYPENAME_TYPE)
       REFERENCE_REF_P (in INDIRECT_EXPR)
@@ -262,6 +263,10 @@ typedef struct ptrmem_cst * ptrmem_cst_t;
 #define EXPR_STMT_STMT_EXPR_RESULT(NODE) \
   TREE_LANG_FLAG_0 (EXPR_STMT_CHECK (NODE))
 
+/* Nonzero if this statement-expression does not have an associated scope.  */
+#define STMT_EXPR_NO_SCOPE(NODE) \
+   TREE_LANG_FLAG_0 (STMT_EXPR_CHECK (NODE))
+
 /* Returns nonzero iff TYPE1 and TYPE2 are the same type, in the usual
    sense of `same'.  */
 #define same_type_p(TYPE1, TYPE2) \
@@ -2940,6 +2945,9 @@ struct lang_decl GTY(())
 #define SWITCH_STMT_BODY(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1)
 #define SWITCH_STMT_TYPE(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 2)
 
+/* STMT_EXPR accessor.  */
+#define STMT_EXPR_STMT(NODE)    TREE_OPERAND (STMT_EXPR_CHECK (NODE), 0)
+
 /* An enumeration of the kind of tags that C++ accepts.  */
 enum tag_types {
   none_type = 0, /* Not a tag type.  */
index 854efec..2bffb73 100644 (file)
@@ -345,6 +345,12 @@ pp_cxx_primary_expression (cxx_pretty_printer *pp, tree t)
       pp_cxx_unqualified_id (pp, t);
       break;
 
+    case STMT_EXPR:
+      pp_cxx_left_paren (pp);
+      pp_cxx_statement (pp, STMT_EXPR_STMT (t));
+      pp_cxx_right_paren (pp);
+      break;
+
     default:
       pp_c_primary_expression (pp_c_base (pp), t);
       break;
@@ -863,6 +869,7 @@ pp_cxx_expression (cxx_pretty_printer *pp, tree t)
     case TEMPLATE_TYPE_PARM:
     case TEMPLATE_PARM_INDEX:
     case TEMPLATE_TEMPLATE_PARM:
+    case STMT_EXPR:
       pp_cxx_primary_expression (pp, t);
       break;
 
@@ -1584,7 +1591,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
       pp_cxx_right_paren (pp);
       pp_indentation (pp) += 3;
       pp_needs_newline (pp) = true;
-      pp_statement (pp, SWITCH_STMT_BODY (t));
+      pp_cxx_statement (pp, SWITCH_STMT_BODY (t));
       pp_newline_and_indent (pp, -3);
       break;
 
@@ -1600,7 +1607,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
       pp_expression (pp, WHILE_COND (t));
       pp_cxx_right_paren (pp);
       pp_newline_and_indent (pp, 3);
-      pp_statement (pp, WHILE_BODY (t));
+      pp_cxx_statement (pp, WHILE_BODY (t));
       pp_indentation (pp) -= 3;
       pp_needs_newline (pp) = true;
       break;
@@ -1608,7 +1615,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
     case DO_STMT:
       pp_cxx_identifier (pp, "do");
       pp_newline_and_indent (pp, 3);
-      pp_statement (pp, DO_BODY (t));
+      pp_cxx_statement (pp, DO_BODY (t));
       pp_newline_and_indent (pp, -3);
       pp_cxx_identifier (pp, "while");
       pp_space (pp);
@@ -1624,7 +1631,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
       pp_space (pp);
       pp_cxx_left_paren (pp);
       if (FOR_INIT_STMT (t))
-        pp_statement (pp, FOR_INIT_STMT (t));
+        pp_cxx_statement (pp, FOR_INIT_STMT (t));
       else
         pp_cxx_semicolon (pp);
       pp_needs_newline (pp) = false;
@@ -1638,7 +1645,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
        pp_expression (pp, FOR_EXPR (t));
       pp_cxx_right_paren (pp);
       pp_newline_and_indent (pp, 3);
-      pp_statement (pp, FOR_BODY (t));
+      pp_cxx_statement (pp, FOR_BODY (t));
       pp_indentation (pp) -= 3;
       pp_needs_newline (pp) = true;
       break;
index f653d3a..20c7ace 100644 (file)
@@ -455,6 +455,10 @@ cp_dump_tree (void* dump_info, tree t)
       dump_child ("body", WHILE_BODY (t));
       break;
 
+    case STMT_EXPR:
+      dump_child ("stmt", STMT_EXPR_STMT (t));
+      break;
+
     default:
       break;
     }