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
This commit is contained in:
Tom Tromey 2004-09-24 15:39:17 +00:00 committed by Tom Tromey
parent 17c08c32de
commit 90424847a6
3 changed files with 16 additions and 4 deletions

View File

@ -1,3 +1,11 @@
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>
PR java/16927:

View File

@ -3178,9 +3178,6 @@ force_evaluation_order (tree node)
{
tree arg, cmp;
if (!TREE_OPERAND (node, 1))
return node;
arg = node;
/* Position arg properly, account for wrapped around ctors. */
@ -3189,7 +3186,11 @@ force_evaluation_order (tree node)
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)
abort ();

View File

@ -9607,6 +9607,9 @@ resolve_qualified_expression_name (tree wfl, tree *found_decl,
forcoming function's argument. */
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, *where_found);
TREE_SIDE_EFFECTS (decl) = 1;