diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-24 15:39:17 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-24 15:39:17 +0000 |
commit | a87a7c2de89035c2d1e75507ef29e45ebe29e20a (patch) | |
tree | 716092990a2a64abdb5612e435b1a99a3f1f51b0 /gcc/java | |
parent | d19c825d230669d1a99ad2185f774361fbccb6aa (diff) | |
download | ppe42-gcc-a87a7c2de89035c2d1e75507ef29e45ebe29e20a.tar.gz ppe42-gcc-a87a7c2de89035c2d1e75507ef29e45ebe29e20a.zip |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88045 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/java/expr.c | 9 | ||||
-rw-r--r-- | gcc/java/parse.y | 3 |
3 files changed, 16 insertions, 4 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 0e2b8b1e353..f66e444e601 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -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: diff --git a/gcc/java/expr.c b/gcc/java/expr.c index 33d3afdd3c0..33c048fe5e4 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -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 (); diff --git a/gcc/java/parse.y b/gcc/java/parse.y index b6cedbfc37b..2287d9075d2 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -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; |