Commit 00b4575d by Per Bothner Committed by Per Bothner

parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is constant,…

parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is constant, return body without wrapper.


	* parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
	constant, return body without wrapper.  (Improves constant folding.)
	* lex.c (build_wfl_node):  Clear TREE_TYPE from returned node.

From-SVN: r39017
parent 521b9224
2001-01-14 Per Bothner <per@bothner.com>
* parse.y (java_complete_lhs case EXPR_WITH_FILE_LOCATION): If body is
constant, return body without wrapper. (Improves constant folding.)
* lex.c (build_wfl_node): Clear TREE_TYPE from returned node.
2001-01-13 Per Bothner <per@bothner.com> 2001-01-13 Per Bothner <per@bothner.com>
* expr.c (expand_java_field_op): Assigning to a final field outside * expr.c (expand_java_field_op): Assigning to a final field outside
......
...@@ -1642,7 +1642,10 @@ static tree ...@@ -1642,7 +1642,10 @@ static tree
build_wfl_node (node) build_wfl_node (node)
tree node; tree node;
{ {
return build_expr_wfl (node, ctxp->filename, ctxp->elc.line, ctxp->elc.col); node = build_expr_wfl (node, ctxp->filename, ctxp->elc.line, ctxp->elc.col);
/* Prevent java_complete_lhs from short-circuiting node (if constant). */
TREE_TYPE (node) = NULL_TREE;
return node;
} }
#endif #endif
......
...@@ -11485,9 +11485,9 @@ java_complete_lhs (node) ...@@ -11485,9 +11485,9 @@ java_complete_lhs (node)
EXPR_WFL_NODE (node) = body; EXPR_WFL_NODE (node) = body;
TREE_SIDE_EFFECTS (node) = TREE_SIDE_EFFECTS (body); TREE_SIDE_EFFECTS (node) = TREE_SIDE_EFFECTS (body);
CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (body); CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (body);
if (body == empty_stmt_node) if (body == empty_stmt_node || TREE_CONSTANT (body))
{ {
/* Optimization; makes it easier to detect empty bodies. */ /* Makes it easier to constant fold, detect empty bodies. */
return body; return body;
} }
if (body == error_mark_node) if (body == error_mark_node)
......
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