8357951: Remove the IdealLoopTree* loop parameter from PhaseIdealLoop::loop_iv_phi
Reviewed-by: thartmann, mhaessig
This commit is contained in:
parent
bb2611ad43
commit
d1b788005b
@ -458,7 +458,7 @@ Node* PhaseIdealLoop::loop_iv_incr(Node* incr, Node* x, IdealLoopTree* loop, Nod
|
|||||||
return incr;
|
return incr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* PhaseIdealLoop::loop_iv_stride(Node* incr, IdealLoopTree* loop, Node*& xphi) {
|
Node* PhaseIdealLoop::loop_iv_stride(Node* incr, Node*& xphi) {
|
||||||
assert(incr->Opcode() == Op_AddI || incr->Opcode() == Op_AddL, "caller resp.");
|
assert(incr->Opcode() == Op_AddI || incr->Opcode() == Op_AddL, "caller resp.");
|
||||||
// Get merge point
|
// Get merge point
|
||||||
xphi = incr->in(1);
|
xphi = incr->in(1);
|
||||||
@ -474,7 +474,7 @@ Node* PhaseIdealLoop::loop_iv_stride(Node* incr, IdealLoopTree* loop, Node*& xph
|
|||||||
return stride;
|
return stride;
|
||||||
}
|
}
|
||||||
|
|
||||||
PhiNode* PhaseIdealLoop::loop_iv_phi(Node* xphi, Node* phi_incr, Node* x, IdealLoopTree* loop) {
|
PhiNode* PhaseIdealLoop::loop_iv_phi(Node* xphi, Node* phi_incr, Node* x) {
|
||||||
if (!xphi->is_Phi()) {
|
if (!xphi->is_Phi()) {
|
||||||
return nullptr; // Too much math on the trip counter
|
return nullptr; // Too much math on the trip counter
|
||||||
}
|
}
|
||||||
@ -1481,11 +1481,11 @@ void PhaseIdealLoop::check_counted_loop_shape(IdealLoopTree* loop, Node* x, Basi
|
|||||||
assert(incr != nullptr && incr->Opcode() == Op_Add(bt), "no incr");
|
assert(incr != nullptr && incr->Opcode() == Op_Add(bt), "no incr");
|
||||||
|
|
||||||
Node* xphi = nullptr;
|
Node* xphi = nullptr;
|
||||||
Node* stride = loop_iv_stride(incr, loop, xphi);
|
Node* stride = loop_iv_stride(incr, xphi);
|
||||||
|
|
||||||
assert(stride != nullptr, "no stride");
|
assert(stride != nullptr, "no stride");
|
||||||
|
|
||||||
PhiNode* phi = loop_iv_phi(xphi, phi_incr, x, loop);
|
PhiNode* phi = loop_iv_phi(xphi, phi_incr, x);
|
||||||
|
|
||||||
assert(phi != nullptr && phi->in(LoopNode::LoopBackControl) == incr, "No phi");
|
assert(phi != nullptr && phi->in(LoopNode::LoopBackControl) == incr, "No phi");
|
||||||
|
|
||||||
@ -1650,7 +1650,7 @@ bool PhaseIdealLoop::is_counted_loop(Node* x, IdealLoopTree*&loop, BasicType iv_
|
|||||||
assert(incr->Opcode() == Op_Add(iv_bt), "wrong increment code");
|
assert(incr->Opcode() == Op_Add(iv_bt), "wrong increment code");
|
||||||
|
|
||||||
Node* xphi = nullptr;
|
Node* xphi = nullptr;
|
||||||
Node* stride = loop_iv_stride(incr, loop, xphi);
|
Node* stride = loop_iv_stride(incr, xphi);
|
||||||
|
|
||||||
if (stride == nullptr) {
|
if (stride == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
@ -1664,7 +1664,7 @@ bool PhaseIdealLoop::is_counted_loop(Node* x, IdealLoopTree*&loop, BasicType iv_
|
|||||||
jlong stride_con = stride->get_integer_as_long(iv_bt);
|
jlong stride_con = stride->get_integer_as_long(iv_bt);
|
||||||
assert(stride_con != 0, "missed some peephole opt");
|
assert(stride_con != 0, "missed some peephole opt");
|
||||||
|
|
||||||
PhiNode* phi = loop_iv_phi(xphi, phi_incr, x, loop);
|
PhiNode* phi = loop_iv_phi(xphi, phi_incr, x);
|
||||||
|
|
||||||
if (phi == nullptr ||
|
if (phi == nullptr ||
|
||||||
(trunc1 == nullptr && phi->in(LoopNode::LoopBackControl) != incr) ||
|
(trunc1 == nullptr && phi->in(LoopNode::LoopBackControl) != incr) ||
|
||||||
|
@ -1280,8 +1280,8 @@ public:
|
|||||||
Node* loop_exit_control(Node* x, IdealLoopTree* loop);
|
Node* loop_exit_control(Node* x, IdealLoopTree* loop);
|
||||||
Node* loop_exit_test(Node* back_control, IdealLoopTree* loop, Node*& incr, Node*& limit, BoolTest::mask& bt, float& cl_prob);
|
Node* loop_exit_test(Node* back_control, IdealLoopTree* loop, Node*& incr, Node*& limit, BoolTest::mask& bt, float& cl_prob);
|
||||||
Node* loop_iv_incr(Node* incr, Node* x, IdealLoopTree* loop, Node*& phi_incr);
|
Node* loop_iv_incr(Node* incr, Node* x, IdealLoopTree* loop, Node*& phi_incr);
|
||||||
Node* loop_iv_stride(Node* incr, IdealLoopTree* loop, Node*& xphi);
|
Node* loop_iv_stride(Node* incr, Node*& xphi);
|
||||||
PhiNode* loop_iv_phi(Node* xphi, Node* phi_incr, Node* x, IdealLoopTree* loop);
|
PhiNode* loop_iv_phi(Node* xphi, Node* phi_incr, Node* x);
|
||||||
|
|
||||||
bool is_counted_loop(Node* x, IdealLoopTree*&loop, BasicType iv_bt);
|
bool is_counted_loop(Node* x, IdealLoopTree*&loop, BasicType iv_bt);
|
||||||
|
|
||||||
|
@ -4271,13 +4271,13 @@ bool PhaseIdealLoop::duplicate_loop_backedge(IdealLoopTree *loop, Node_List &old
|
|||||||
}
|
}
|
||||||
assert(in->Opcode() == Op_AddI, "wrong increment code");
|
assert(in->Opcode() == Op_AddI, "wrong increment code");
|
||||||
Node* xphi = nullptr;
|
Node* xphi = nullptr;
|
||||||
Node* stride = loop_iv_stride(in, loop, xphi);
|
Node* stride = loop_iv_stride(in, xphi);
|
||||||
|
|
||||||
if (stride == nullptr) {
|
if (stride == nullptr) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
PhiNode* phi = loop_iv_phi(xphi, nullptr, head, loop);
|
PhiNode* phi = loop_iv_phi(xphi, nullptr, head);
|
||||||
if (phi == nullptr ||
|
if (phi == nullptr ||
|
||||||
(trunc1 == nullptr && phi->in(LoopNode::LoopBackControl) != incr) ||
|
(trunc1 == nullptr && phi->in(LoopNode::LoopBackControl) != incr) ||
|
||||||
(trunc1 != nullptr && phi->in(LoopNode::LoopBackControl) != trunc1)) {
|
(trunc1 != nullptr && phi->in(LoopNode::LoopBackControl) != trunc1)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user