# HG changeset patch # User kvn # Date 1207013856 25200 # Node ID de93acbb64fc4ac92cfba1f080c2b7dc6f21cee4 # Parent dee7a3f3dc9d310a0657faae67431e473b0de234 6682236: C2 hits ideal nodes limit during IGVN optimization with EA Summary: missing check in LoadNode::Ideal() causes infinite generation of a value Phi. Reviewed-by: jrose, never diff -r dee7a3f3dc9d -r de93acbb64fc src/share/vm/opto/memnode.cpp --- a/src/share/vm/opto/memnode.cpp Mon Mar 31 16:22:52 2008 -0700 +++ b/src/share/vm/opto/memnode.cpp Mon Mar 31 18:37:36 2008 -0700 @@ -1122,6 +1122,12 @@ } // Split through Phi (see original code in loopopts.cpp). assert(phase->C->have_alias_type(addr_t), "instance should have alias type"); + + // Do nothing here if Identity will find a value + // (to avoid infinite chain of value phis generation). + if ( !phase->eqv(this, this->Identity(phase)) ) + return NULL; + const Type* this_type = this->bottom_type(); int this_index = phase->C->get_alias_index(addr_t); int this_offset = addr_t->offset();