Commit fcc8cecb by Tom Tromey Committed by Tom Tromey

re PR java/10459 (ICE with certain expressions as 3rd clause of for loop)

	PR java/10459:
	* parse.y (finish_for_loop): Do nothing if update expression is a
	EXPR_WFL_NODE wrapping nothing.
	(java_complete_lhs) <COMPOUND_EXPR>: Likewise.

From-SVN: r66411
parent a6f1f688
2003-05-01 Tom Tromey <tromey@redhat.com>
PR java/10459:
* parse.y (finish_for_loop): Do nothing if update expression is a
EXPR_WFL_NODE wrapping nothing.
(java_complete_lhs) <COMPOUND_EXPR>: Likewise.
2003-05-02 Nathan Sidwell <nathan@codesourcery.com> 2003-05-02 Nathan Sidwell <nathan@codesourcery.com>
* lex.h (input_lineno): Remove declaration. * lex.h (input_lineno): Remove declaration.
......
...@@ -11771,7 +11771,9 @@ java_complete_lhs (tree node) ...@@ -11771,7 +11771,9 @@ java_complete_lhs (tree node)
nn = wfl_op2; nn = wfl_op2;
if (TREE_CODE (nn) == EXPR_WITH_FILE_LOCATION) if (TREE_CODE (nn) == EXPR_WITH_FILE_LOCATION)
nn = EXPR_WFL_NODE (nn); nn = EXPR_WFL_NODE (nn);
if (TREE_CODE (nn) != EXIT_EXPR) /* NN can be NULL_TREE exactly when UPDATE is, in
finish_for_loop. */
if (nn != NULL_TREE && TREE_CODE (nn) != EXIT_EXPR)
{ {
SET_WFL_OPERATOR (wfl_operator, node, wfl_op2); SET_WFL_OPERATOR (wfl_operator, node, wfl_op2);
if (SUPPRESS_UNREACHABLE_ERROR (nn)) if (SUPPRESS_UNREACHABLE_ERROR (nn))
...@@ -14928,12 +14930,17 @@ finish_for_loop (int location, tree condition, tree update, tree body) ...@@ -14928,12 +14930,17 @@ finish_for_loop (int location, tree condition, tree update, tree body)
tree up2 = update; tree up2 = update;
if (TREE_CODE (up2) == EXPR_WITH_FILE_LOCATION) if (TREE_CODE (up2) == EXPR_WITH_FILE_LOCATION)
up2 = EXPR_WFL_NODE (up2); up2 = EXPR_WFL_NODE (up2);
/* Try to detect constraint violations. These would be /* It is possible for the update expression to be an
programming errors somewhere. */ EXPR_WFL_NODE wrapping nothing. */
if (! IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (up2))) if (up2 != NULL_TREE && up2 != empty_stmt_node)
|| TREE_CODE (up2) == LOOP_EXPR) {
abort (); /* Try to detect constraint violations. These would be
SUPPRESS_UNREACHABLE_ERROR (up2) = 1; programming errors somewhere. */
if (! IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (up2)))
|| TREE_CODE (up2) == LOOP_EXPR)
abort ();
SUPPRESS_UNREACHABLE_ERROR (up2) = 1;
}
} }
LOOP_EXPR_BODY_UPDATE_BLOCK (LOOP_EXPR_BODY (loop)) = update; LOOP_EXPR_BODY_UPDATE_BLOCK (LOOP_EXPR_BODY (loop)) = update;
return loop; return loop;
......
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