6901572: JVM 1.6.16 crash on loops: assert(has_node(i),"")

Skip the secondary induction variable handling if it is dead

Reviewed-by: never, kvn
This commit is contained in:
Changpeng Fang 2009-12-02 13:29:00 -08:00
parent b5e3a7a597
commit 8a9580b1a1
2 changed files with 57 additions and 1 deletions

View file

@ -1279,7 +1279,8 @@ void IdealLoopTree::counted_loop( PhaseIdealLoop *phase ) {
// Visit all children, looking for Phis
for (DUIterator i = cl->outs(); cl->has_out(i); i++) {
Node *out = cl->out(i);
if (!out->is_Phi() || out == phi) continue; // Looking for other phis
// Look for other phis (secondary IVs). Skip dead ones
if (!out->is_Phi() || out == phi || !phase->has_node(out)) continue;
PhiNode* phi2 = out->as_Phi();
Node *incr2 = phi2->in( LoopNode::LoopBackControl );
// Look for induction variables of the form: X += constant