OSDN Git Service

* expr.c (push_value): Always flush quick stack.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Sep 2006 19:51:08 +0000 (19:51 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 12 Sep 2006 19:51:08 +0000 (19:51 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116905 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/expr.c

index af1c42b..756fbcf 100644 (file)
@@ -1,5 +1,9 @@
 2006-09-12  Tom Tromey  <tromey@redhat.com>
 
+       * expr.c (push_value): Always flush quick stack.
+
+2006-09-12  Tom Tromey  <tromey@redhat.com>
+
        PR java/29013:
        * jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Always note
        the push of the called method's return result.
index 26cd7da..3cb3db7 100644 (file)
@@ -301,6 +301,13 @@ push_value (tree value)
       TREE_CHAIN (node) = quick_stack;
       quick_stack = node;
     }
+  /* If the value has a side effect, then we need to evaluate it
+     whether or not the result is used.  If the value ends up on the
+     quick stack and is then popped, this won't happen -- so we flush
+     the quick stack.  It is safest to simply always flush, though,
+     since TREE_SIDE_EFFECTS doesn't capture COMPONENT_REF, and for
+     the latter we may need to strip conversions.  */
+  flush_quick_stack ();
 }
 
 /* Pop a type from the type stack.