Mercurial > hg > graal-compiler
comparison src/share/vm/opto/memnode.cpp @ 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 | 2a9af0b9cb1c |
children | f3b3fe64f59f ba764ed4b6f2 |
comparison
equal
deleted
inserted
replaced
81:dee7a3f3dc9d | 82:de93acbb64fc |
---|---|
1120 } | 1120 } |
1121 } | 1121 } |
1122 } | 1122 } |
1123 // Split through Phi (see original code in loopopts.cpp). | 1123 // Split through Phi (see original code in loopopts.cpp). |
1124 assert(phase->C->have_alias_type(addr_t), "instance should have alias type"); | 1124 assert(phase->C->have_alias_type(addr_t), "instance should have alias type"); |
1125 | |
1126 // Do nothing here if Identity will find a value | |
1127 // (to avoid infinite chain of value phis generation). | |
1128 if ( !phase->eqv(this, this->Identity(phase)) ) | |
1129 return NULL; | |
1130 | |
1125 const Type* this_type = this->bottom_type(); | 1131 const Type* this_type = this->bottom_type(); |
1126 int this_index = phase->C->get_alias_index(addr_t); | 1132 int this_index = phase->C->get_alias_index(addr_t); |
1127 int this_offset = addr_t->offset(); | 1133 int this_offset = addr_t->offset(); |
1128 int this_iid = addr_t->is_oopptr()->instance_id(); | 1134 int this_iid = addr_t->is_oopptr()->instance_id(); |
1129 int wins = 0; | 1135 int wins = 0; |