changeset 82:de93acbb64fc

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
author kvn
date Mon, 31 Mar 2008 18:37:36 -0700
parents dee7a3f3dc9d
children d3cd40645d0d
files src/share/vm/opto/memnode.cpp
diffstat 1 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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();