parse.y (fix_constructors): Test if a CALL_EXPR invokes `this'.
authorJeff Sturm <jsturm@one-point.com>
Tue, 3 Jul 2001 23:44:07 +0000 (23:44 +0000)
committerJeff Sturm <jsturm@gcc.gnu.org>
Tue, 3 Jul 2001 23:44:07 +0000 (23:44 +0000)
* java/parse.y (fix_constructors): Test if a CALL_EXPR invokes
`this'.  If so, don't build instance initializers.

From-SVN: r43743

gcc/java/ChangeLog
gcc/java/parse.y

index 2c5cdd27a1ecb8ccd5e28ee83bca6536048fd23c..54277b1785493f13739c058a37b6bad321579151 100644 (file)
@@ -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
index a56c8fc8b8b15c9d80bfea60b699566577196b93..ac062ad1cbb1b6185cde50299b0928c11da45454 100644 (file)
@@ -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 */