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>
PR target/21100
......
......@@ -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;
......
......@@ -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)
......
......@@ -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;
}
......
......@@ -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;
......
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
......
......@@ -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
......
......@@ -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. */
......
......@@ -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;
......
......@@ -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;
}
......
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