--- a/src/hotspot/share/opto/loopTransform.cpp Tue Nov 12 06:32:13 2019 +0000
+++ b/src/hotspot/share/opto/loopTransform.cpp Tue Nov 12 10:16:04 2019 +0100
@@ -2975,16 +2975,17 @@
}
#ifdef ASSERT
-static CountedLoopNode* locate_pre_from_main(CountedLoopNode *cl) {
- Node *ctrl = cl->skip_predicates();
+static CountedLoopNode* locate_pre_from_main(CountedLoopNode* main_loop) {
+ assert(!main_loop->is_main_no_pre_loop(), "Does not have a pre loop");
+ Node* ctrl = main_loop->skip_predicates();
assert(ctrl->Opcode() == Op_IfTrue || ctrl->Opcode() == Op_IfFalse, "");
- Node *iffm = ctrl->in(0);
+ Node* iffm = ctrl->in(0);
assert(iffm->Opcode() == Op_If, "");
- Node *p_f = iffm->in(0);
+ Node* p_f = iffm->in(0);
assert(p_f->Opcode() == Op_IfFalse, "");
- CountedLoopEndNode *pre_end = p_f->in(0)->as_CountedLoopEnd();
- assert(pre_end->loopnode()->is_pre_loop(), "");
- return pre_end->loopnode();
+ CountedLoopNode* pre_loop = p_f->in(0)->as_CountedLoopEnd()->loopnode();
+ assert(pre_loop->is_pre_loop(), "No pre loop found");
+ return pre_loop;
}
#endif
@@ -3010,7 +3011,7 @@
}
CountedLoopNode* main_head = next_head->as_CountedLoop();
- if (!main_head->is_main_loop()) {
+ if (!main_head->is_main_loop() || main_head->is_main_no_pre_loop()) {
return;
}