Commit c3e5898b by Ian Lance Taylor Committed by Ian Lance Taylor

c-common.def: Remove STMT_EXPR (moved to cp/cp-tree.def).

./	* 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.

From-SVN: r98469
parent 02d98c0d
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> 2005-04-20 Richard Henderson <rth@redhat.com>
PR target/21100 PR target/21100
......
...@@ -29,10 +29,6 @@ cp-tree.def in the cp subdir. */ ...@@ -29,10 +29,6 @@ cp-tree.def in the cp subdir. */
obtain the expression. */ obtain the expression. */
DEFTREECODE (EXPR_STMT, "expr_stmt", tcc_expression, 1) 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 /* A COMPOUND_LITERAL_EXPR represents a C99 compound literal. The
COMPOUND_LITERAL_EXPR_DECL_STMT is the a DECL_STMT containing the decl COMPOUND_LITERAL_EXPR_DECL_STMT is the a DECL_STMT containing the decl
for the anonymous object represented by the COMPOUND_LITERAL; for the anonymous object represented by the COMPOUND_LITERAL;
......
...@@ -30,7 +30,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA ...@@ -30,7 +30,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
0: TREE_NEGATED_INT (in INTEGER_CST). 0: TREE_NEGATED_INT (in INTEGER_CST).
IDENTIFIER_MARKED (used by search routines). IDENTIFIER_MARKED (used by search routines).
DECL_PRETTY_FUNCTION_P (in VAR_DECL) DECL_PRETTY_FUNCTION_P (in VAR_DECL)
STMT_EXPR_NO_SCOPE (in STMT_EXPR)
1: C_DECLARED_LABEL_FLAG (in LABEL_DECL) 1: C_DECLARED_LABEL_FLAG (in LABEL_DECL)
STMT_IS_FULL_EXPR_P (in _STMT) STMT_IS_FULL_EXPR_P (in _STMT)
STATEMENT_LIST_STMT_EXPR (in STATEMENT_LIST) STATEMENT_LIST_STMT_EXPR (in STATEMENT_LIST)
...@@ -713,13 +712,6 @@ extern void finish_file (void); ...@@ -713,13 +712,6 @@ extern void finish_file (void);
expression statement. */ expression statement. */
#define EXPR_STMT_EXPR(NODE) TREE_OPERAND (EXPR_STMT_CHECK (NODE), 0) #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. */ /* COMPOUND_LITERAL_EXPR accessors. */
#define COMPOUND_LITERAL_EXPR_DECL_STMT(NODE) \ #define COMPOUND_LITERAL_EXPR_DECL_STMT(NODE) \
TREE_OPERAND (COMPOUND_LITERAL_EXPR_CHECK (NODE), 0) TREE_OPERAND (COMPOUND_LITERAL_EXPR_CHECK (NODE), 0)
......
...@@ -59,10 +59,6 @@ c_dump_tree (void *dump_info, tree t) ...@@ -59,10 +59,6 @@ c_dump_tree (void *dump_info, tree t)
dump_child ("expr", EXPR_STMT_EXPR (t)); dump_child ("expr", EXPR_STMT_EXPR (t));
break; break;
case STMT_EXPR:
dump_child ("stmt", STMT_EXPR_STMT (t));
break;
default: default:
break; break;
} }
......
...@@ -1013,12 +1013,6 @@ pp_c_primary_expression (c_pretty_printer *pp, tree e) ...@@ -1013,12 +1013,6 @@ pp_c_primary_expression (c_pretty_printer *pp, tree e)
pp_c_right_paren (pp); pp_c_right_paren (pp);
break; break;
case STMT_EXPR:
pp_c_left_paren (pp);
pp_statement (pp, STMT_EXPR_STMT (e));
pp_c_right_paren (pp);
break;
default: default:
/* FIXME: Make sure we won't get into an infinie loop. */ /* FIXME: Make sure we won't get into an infinie loop. */
pp_c_left_paren (pp); pp_c_left_paren (pp);
...@@ -1786,7 +1780,6 @@ pp_c_expression (c_pretty_printer *pp, tree e) ...@@ -1786,7 +1780,6 @@ pp_c_expression (c_pretty_printer *pp, tree e)
case FIELD_DECL: case FIELD_DECL:
case LABEL_DECL: case LABEL_DECL:
case ERROR_MARK: case ERROR_MARK:
case STMT_EXPR:
pp_primary_expression (pp, e); pp_primary_expression (pp, e);
break; break;
......
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> 2005-04-18 Kazu Hirata <kazu@cs.umass.edu>
* decl.c (expand_static_init): Call build2 and build3 instead * decl.c (expand_static_init): Call build2 and build3 instead
......
...@@ -331,6 +331,11 @@ DEFTREECODE (ARROW_EXPR, "arrow_expr", tcc_expression, 1) ...@@ -331,6 +331,11 @@ DEFTREECODE (ARROW_EXPR, "arrow_expr", tcc_expression, 1)
expansion. */ expansion. */
DEFTREECODE (ALIGNOF_EXPR, "alignof_expr", tcc_unary, 1) 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: Local variables:
mode:c mode:c
......
...@@ -47,6 +47,7 @@ struct diagnostic_context; ...@@ -47,6 +47,7 @@ struct diagnostic_context;
KOENIG_LOOKUP_P (in CALL_EXPR) KOENIG_LOOKUP_P (in CALL_EXPR)
STATEMENT_LIST_NO_SCOPE (in STATEMENT_LIST). STATEMENT_LIST_NO_SCOPE (in STATEMENT_LIST).
EXPR_STMT_STMT_EXPR_RESULT (in EXPR_STMT) EXPR_STMT_STMT_EXPR_RESULT (in EXPR_STMT)
STMT_EXPR_NO_SCOPE (in STMT_EXPR)
BIND_EXPR_TRY_BLOCK (in BIND_EXPR) BIND_EXPR_TRY_BLOCK (in BIND_EXPR)
TYPENAME_IS_ENUM_P (in TYPENAME_TYPE) TYPENAME_IS_ENUM_P (in TYPENAME_TYPE)
REFERENCE_REF_P (in INDIRECT_EXPR) REFERENCE_REF_P (in INDIRECT_EXPR)
...@@ -262,6 +263,10 @@ typedef struct ptrmem_cst * ptrmem_cst_t; ...@@ -262,6 +263,10 @@ typedef struct ptrmem_cst * ptrmem_cst_t;
#define EXPR_STMT_STMT_EXPR_RESULT(NODE) \ #define EXPR_STMT_STMT_EXPR_RESULT(NODE) \
TREE_LANG_FLAG_0 (EXPR_STMT_CHECK (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 /* Returns nonzero iff TYPE1 and TYPE2 are the same type, in the usual
sense of `same'. */ sense of `same'. */
#define same_type_p(TYPE1, TYPE2) \ #define same_type_p(TYPE1, TYPE2) \
...@@ -2940,6 +2945,9 @@ struct lang_decl GTY(()) ...@@ -2940,6 +2945,9 @@ struct lang_decl GTY(())
#define SWITCH_STMT_BODY(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1) #define SWITCH_STMT_BODY(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 1)
#define SWITCH_STMT_TYPE(NODE) TREE_OPERAND (SWITCH_STMT_CHECK (NODE), 2) #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. */ /* An enumeration of the kind of tags that C++ accepts. */
enum tag_types { enum tag_types {
none_type = 0, /* Not a tag type. */ none_type = 0, /* Not a tag type. */
......
...@@ -345,6 +345,12 @@ pp_cxx_primary_expression (cxx_pretty_printer *pp, tree t) ...@@ -345,6 +345,12 @@ pp_cxx_primary_expression (cxx_pretty_printer *pp, tree t)
pp_cxx_unqualified_id (pp, t); pp_cxx_unqualified_id (pp, t);
break; break;
case STMT_EXPR:
pp_cxx_left_paren (pp);
pp_cxx_statement (pp, STMT_EXPR_STMT (t));
pp_cxx_right_paren (pp);
break;
default: default:
pp_c_primary_expression (pp_c_base (pp), t); pp_c_primary_expression (pp_c_base (pp), t);
break; break;
...@@ -863,6 +869,7 @@ pp_cxx_expression (cxx_pretty_printer *pp, tree t) ...@@ -863,6 +869,7 @@ pp_cxx_expression (cxx_pretty_printer *pp, tree t)
case TEMPLATE_TYPE_PARM: case TEMPLATE_TYPE_PARM:
case TEMPLATE_PARM_INDEX: case TEMPLATE_PARM_INDEX:
case TEMPLATE_TEMPLATE_PARM: case TEMPLATE_TEMPLATE_PARM:
case STMT_EXPR:
pp_cxx_primary_expression (pp, t); pp_cxx_primary_expression (pp, t);
break; break;
...@@ -1584,7 +1591,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t) ...@@ -1584,7 +1591,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
pp_cxx_right_paren (pp); pp_cxx_right_paren (pp);
pp_indentation (pp) += 3; pp_indentation (pp) += 3;
pp_needs_newline (pp) = true; 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); pp_newline_and_indent (pp, -3);
break; break;
...@@ -1600,7 +1607,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t) ...@@ -1600,7 +1607,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
pp_expression (pp, WHILE_COND (t)); pp_expression (pp, WHILE_COND (t));
pp_cxx_right_paren (pp); pp_cxx_right_paren (pp);
pp_newline_and_indent (pp, 3); pp_newline_and_indent (pp, 3);
pp_statement (pp, WHILE_BODY (t)); pp_cxx_statement (pp, WHILE_BODY (t));
pp_indentation (pp) -= 3; pp_indentation (pp) -= 3;
pp_needs_newline (pp) = true; pp_needs_newline (pp) = true;
break; break;
...@@ -1608,7 +1615,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t) ...@@ -1608,7 +1615,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
case DO_STMT: case DO_STMT:
pp_cxx_identifier (pp, "do"); pp_cxx_identifier (pp, "do");
pp_newline_and_indent (pp, 3); 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_newline_and_indent (pp, -3);
pp_cxx_identifier (pp, "while"); pp_cxx_identifier (pp, "while");
pp_space (pp); pp_space (pp);
...@@ -1624,7 +1631,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t) ...@@ -1624,7 +1631,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
pp_space (pp); pp_space (pp);
pp_cxx_left_paren (pp); pp_cxx_left_paren (pp);
if (FOR_INIT_STMT (t)) if (FOR_INIT_STMT (t))
pp_statement (pp, FOR_INIT_STMT (t)); pp_cxx_statement (pp, FOR_INIT_STMT (t));
else else
pp_cxx_semicolon (pp); pp_cxx_semicolon (pp);
pp_needs_newline (pp) = false; pp_needs_newline (pp) = false;
...@@ -1638,7 +1645,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t) ...@@ -1638,7 +1645,7 @@ pp_cxx_statement (cxx_pretty_printer *pp, tree t)
pp_expression (pp, FOR_EXPR (t)); pp_expression (pp, FOR_EXPR (t));
pp_cxx_right_paren (pp); pp_cxx_right_paren (pp);
pp_newline_and_indent (pp, 3); pp_newline_and_indent (pp, 3);
pp_statement (pp, FOR_BODY (t)); pp_cxx_statement (pp, FOR_BODY (t));
pp_indentation (pp) -= 3; pp_indentation (pp) -= 3;
pp_needs_newline (pp) = true; pp_needs_newline (pp) = true;
break; break;
......
...@@ -455,6 +455,10 @@ cp_dump_tree (void* dump_info, tree t) ...@@ -455,6 +455,10 @@ cp_dump_tree (void* dump_info, tree t)
dump_child ("body", WHILE_BODY (t)); dump_child ("body", WHILE_BODY (t));
break; break;
case STMT_EXPR:
dump_child ("stmt", STMT_EXPR_STMT (t));
break;
default: default:
break; break;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment