提交 f83c5cf5 编写于 作者: N neliasso

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

Reviewed-by: kvn, thartmann

--HG--
extra : rebase_source : e1af5b86db38ac1b7ed27b4f39be267bb8b27d0e
上级 4b263627
...@@ -1359,6 +1359,14 @@ Node *LoadNode::split_through_phi(PhaseGVN *phase) { ...@@ -1359,6 +1359,14 @@ Node *LoadNode::split_through_phi(PhaseGVN *phase) {
Node* in = mem->in(i); Node* in = mem->in(i);
Node* m = optimize_memory_chain(in, t_oop, this, phase); Node* m = optimize_memory_chain(in, t_oop, this, phase);
if (m == mem) { 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)); set_req(Memory, mem->in(cnt - i));
return this; // made change return this; // made change
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册