提交 633c12a0 编写于 作者: N neliasso

8219517: assert(false) failed: infinite loop in PhaseIterGVN::optimize

Reviewed-by: kvn, thartmann
上级 d3b1ef41
......@@ -1370,6 +1370,14 @@ Node *LoadNode::split_through_phi(PhaseGVN *phase) {
Node* in = mem->in(i);
Node* m = optimize_memory_chain(in, t_oop, this, phase);
if (m == mem) {
if (i == 1) {
// if the first edge was a loop, check second edge too.
// If both are replaceable - we are in an infinite loop
Node *n = optimize_memory_chain(mem->in(2), t_oop, this, phase);
if (n == mem) {
break;
}
}
set_req(Memory, mem->in(cnt - i));
return this; // made change
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册