6682236: C2 hits ideal nodes limit during IGVN optimization with EA

Mon, 31 Mar 2008 18:37:36 -0700

author
kvn
date
Mon, 31 Mar 2008 18:37:36 -0700
changeset 517
de93acbb64fc
parent 516
dee7a3f3dc9d
child 518
d3cd40645d0d

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

src/share/vm/opto/memnode.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/opto/memnode.cpp	Mon Mar 31 16:22:52 2008 -0700
     1.2 +++ b/src/share/vm/opto/memnode.cpp	Mon Mar 31 18:37:36 2008 -0700
     1.3 @@ -1122,6 +1122,12 @@
     1.4          }
     1.5          // Split through Phi (see original code in loopopts.cpp).
     1.6          assert(phase->C->have_alias_type(addr_t), "instance should have alias type");
     1.7 +
     1.8 +        // Do nothing here if Identity will find a value
     1.9 +        // (to avoid infinite chain of value phis generation).
    1.10 +        if ( !phase->eqv(this, this->Identity(phase)) )
    1.11 +          return NULL;
    1.12 +
    1.13          const Type* this_type = this->bottom_type();
    1.14          int this_index  = phase->C->get_alias_index(addr_t);
    1.15          int this_offset = addr_t->offset();

mercurial