mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 11:04:34 +02:00
7107042: assert(no_dead_loop) failed: dead loop detected
Use dead nodes elimination code in PhaseIdealLoop before executing EA. Reviewed-by: never, twisti
This commit is contained in:
parent
dc1f4fe50e
commit
09b7902e14
9 changed files with 57 additions and 23 deletions
|
@ -1421,6 +1421,12 @@ Node *LoadNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
|||
const TypeOopPtr *t_oop = addr_t->isa_oopptr();
|
||||
if (can_reshape && opt_mem->is_Phi() &&
|
||||
(t_oop != NULL) && t_oop->is_known_instance_field()) {
|
||||
PhaseIterGVN *igvn = phase->is_IterGVN();
|
||||
if (igvn != NULL && igvn->_worklist.member(opt_mem)) {
|
||||
// Delay this transformation until memory Phi is processed.
|
||||
phase->is_IterGVN()->_worklist.push(this);
|
||||
return NULL;
|
||||
}
|
||||
// Split instance field load through Phi.
|
||||
Node* result = split_through_phi(phase);
|
||||
if (result != NULL) return result;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue