mirror of
https://github.com/openjdk/jdk.git
synced 2026-06-06 10:42:45 +00:00
8144484: assert(no_dead_loop) failed: dead loop detected
Bailout early without splitting Phi through memory merges if TOP inputs present for Phi Nodes Reviewed-by: thartmann, kvn
This commit is contained in:
parent
b9e2a53841
commit
a44e07e4b3
@ -1889,6 +1889,12 @@ Node *PhiNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
||||
bool saw_self = false;
|
||||
for( uint i=1; i<req(); ++i ) {// For all paths in
|
||||
Node *ii = in(i);
|
||||
// TOP inputs should not be counted as safe inputs because if the
|
||||
// Phi references itself through all other inputs then splitting the
|
||||
// Phi through memory merges would create dead loop at later stage.
|
||||
if (ii == top) {
|
||||
return NULL; // Delay optimization until graph is cleaned.
|
||||
}
|
||||
if (ii->is_MergeMem()) {
|
||||
MergeMemNode* n = ii->as_MergeMem();
|
||||
merge_width = MAX2(merge_width, n->req());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user