8075922: assert(t == t_no_spec) fails in phaseX.cpp
Summary: subgraph becomes dead RegionNode::Ideal() but is not destroyed
Reviewed-by: kvn, vlivanov
--- 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;