diff src/share/vm/opto/loopnode.cpp @ 1083:8b22f86d1740

6901572: JVM 1.6.16 crash on loops: assert(has_node(i),"") Summary: Skip the secondary induction variable handling if it is dead Reviewed-by: never, kvn
author cfang
date Wed, 02 Dec 2009 13:29:00 -0800
parents 046932b72aa2
children b2b6a9bf6238
line wrap: on
line diff
--- a/src/share/vm/opto/loopnode.cpp	Tue Dec 01 22:11:01 2009 -0800
+++ b/src/share/vm/opto/loopnode.cpp	Wed Dec 02 13:29:00 2009 -0800
@@ -1279,7 +1279,8 @@
     // 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