diff options
author | Jeff Sturm <jsturm@one-point.com> | 2001-07-03 23:44:07 +0000 |
---|---|---|
committer | Jeff Sturm <jsturm@gcc.gnu.org> | 2001-07-03 23:44:07 +0000 |
commit | 9be7529dbb9f3d2a9dee444230f65597a00780ff (patch) | |
tree | 349600e331227c75b50d39540f2068ebdcd7d248 /gcc/java | |
parent | 1abd48ad23759d5b372e0e540f02247e35246bae (diff) | |
download | gcc-9be7529dbb9f3d2a9dee444230f65597a00780ff.zip gcc-9be7529dbb9f3d2a9dee444230f65597a00780ff.tar.gz gcc-9be7529dbb9f3d2a9dee444230f65597a00780ff.tar.bz2 |
parse.y (fix_constructors): Test if a CALL_EXPR invokes `this'.
* java/parse.y (fix_constructors): Test if a CALL_EXPR invokes
`this'. If so, don't build instance initializers.
From-SVN: r43743
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/parse.y | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 2c5cdd2..54277b1 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2001-07-03 Jeff Sturm <jsturm@one-point.com> + + * parse.y (fix_constructors): Test if a CALL_EXPR invokes + `this'. If so, don't build instance initializers. + 2001-06-28 Gabriel Dos Reis <gdr@codesourcery.com> * lang.c: #include diagnostic.h diff --git a/gcc/java/parse.y b/gcc/java/parse.y index a56c8fc..ac062ad 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -8558,6 +8558,7 @@ fix_constructors (mdecl) else { int found = 0; + int invokes_this = 0; tree found_call = NULL_TREE; tree main_block = BLOCK_EXPR_BODY (body); tree ii; /* Instance Initializer */ @@ -8567,6 +8568,8 @@ fix_constructors (mdecl) { case CALL_EXPR: found = CALL_EXPLICIT_CONSTRUCTOR_P (body); + if (CALL_THIS_CONSTRUCTOR_P (body)) + invokes_this = 1; body = NULL_TREE; break; case COMPOUND_EXPR: @@ -8601,7 +8604,7 @@ fix_constructors (mdecl) } /* Insert the instance initializer block right after. */ - if ((ii = build_instance_initializer (mdecl))) + if (!invokes_this && (ii = build_instance_initializer (mdecl))) compound = add_stmt_to_compound (compound, NULL_TREE, ii); /* Fix the constructor main block if we're adding extra stmts */ |