changeset 30206:855fbaf99089

8075922: assert(t == t_no_spec) fails in phaseX.cpp Summary: subgraph becomes dead RegionNode::Ideal() but is not destroyed Reviewed-by: kvn, vlivanov
author roland
date Wed, 25 Mar 2015 14:25:53 +0100
parents 4f690700bbb9
children 7bf1f70e147b
files hotspot/src/share/vm/opto/cfgnode.cpp
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/hotspot/src/share/vm/opto/cfgnode.cpp	Fri Mar 27 15:08:13 2015 +0000
+++ b/hotspot/src/share/vm/opto/cfgnode.cpp	Wed Mar 25 14:25:53 2015 +0100
@@ -525,13 +525,16 @@
       // Cut the backedge input and remove phis since no data paths left.
       // We don't cut outputs to other nodes here since we need to put them
       // on the worklist.
+      PhaseIterGVN *igvn = phase->is_IterGVN();
+      if (in(1)->outcnt() == 1) {
+        igvn->_worklist.push(in(1));
+      }
       del_req(1);
       cnt = 0;
       assert( req() == 1, "no more inputs expected" );
       uint max = outcnt();
       bool progress = true;
       Node *top = phase->C->top();
-      PhaseIterGVN *igvn = phase->is_IterGVN();
       DUIterator j;
       while(progress) {
         progress = false;