Commit 90424847 by Tom Tromey Committed by Tom Tromey

re PR java/16789 (ICE in force_evaluation_order() on valid code)

	PR java/16789:
	* parse.y (resolve_qualified_expression_name): Set
	CAN_COMPLETE_NORMALLY on first call when chaining static calls.
	* expr.c (force_evaluation_order): Check for empty argument list
	after stripping COMPOUND_EXPR.

From-SVN: r88045
parent 17c08c32
2004-09-24 Tom Tromey <tromey@redhat.com>
PR java/16789:
* parse.y (resolve_qualified_expression_name): Set
CAN_COMPLETE_NORMALLY on first call when chaining static calls.
* expr.c (force_evaluation_order): Check for empty argument list
after stripping COMPOUND_EXPR.
2004-09-23 Andrew Haley <aph@redhat.com> 2004-09-23 Andrew Haley <aph@redhat.com>
PR java/16927: PR java/16927:
......
...@@ -3178,9 +3178,6 @@ force_evaluation_order (tree node) ...@@ -3178,9 +3178,6 @@ force_evaluation_order (tree node)
{ {
tree arg, cmp; tree arg, cmp;
if (!TREE_OPERAND (node, 1))
return node;
arg = node; arg = node;
/* Position arg properly, account for wrapped around ctors. */ /* Position arg properly, account for wrapped around ctors. */
...@@ -3189,7 +3186,11 @@ force_evaluation_order (tree node) ...@@ -3189,7 +3186,11 @@ force_evaluation_order (tree node)
arg = TREE_OPERAND (arg, 1); arg = TREE_OPERAND (arg, 1);
/* Not having a list of argument here is an error. */ /* An empty argument list is ok, just ignore it. */
if (!arg)
return node;
/* Not having a list of arguments here is an error. */
if (TREE_CODE (arg) != TREE_LIST) if (TREE_CODE (arg) != TREE_LIST)
abort (); abort ();
......
...@@ -9607,6 +9607,9 @@ resolve_qualified_expression_name (tree wfl, tree *found_decl, ...@@ -9607,6 +9607,9 @@ resolve_qualified_expression_name (tree wfl, tree *found_decl,
forcoming function's argument. */ forcoming function's argument. */
if (previous_call_static && is_static) if (previous_call_static && is_static)
{ {
/* We must set CAN_COMPLETE_NORMALLY for the first call
since it is done nowhere else. */
CAN_COMPLETE_NORMALLY (decl) = 1;
decl = build2 (COMPOUND_EXPR, TREE_TYPE (*where_found), decl = build2 (COMPOUND_EXPR, TREE_TYPE (*where_found),
decl, *where_found); decl, *where_found);
TREE_SIDE_EFFECTS (decl) = 1; TREE_SIDE_EFFECTS (decl) = 1;
......
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