8278790: Inner loop of long loop nest runs for too few iterations
Reviewed-by: chagedorn, neliasso
This commit is contained in:
parent
8494fec665
commit
bb7efb3517
@ -830,10 +830,6 @@ bool PhaseIdealLoop::create_loop_nest(IdealLoopTree* loop, Node_List &old_new) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// May not have gone thru igvn yet so don't use _igvn.type(phi) (PhaseIdealLoop::is_counted_loop() sets the iv phi's type)
|
||||
const TypeInteger* phi_t = phi->bottom_type()->is_integer(bt);
|
||||
assert(phi_t->hi_as_long() >= phi_t->lo_as_long(), "dead phi?");
|
||||
iters_limit = checked_cast<int>(MIN2((julong)iters_limit, (julong)(phi_t->hi_as_long() - phi_t->lo_as_long())));
|
||||
|
||||
IfNode* exit_test = head->loopexit();
|
||||
BoolTest::mask mask = exit_test->as_BaseCountedLoopEnd()->test_trip();
|
||||
@ -851,6 +847,11 @@ bool PhaseIdealLoop::create_loop_nest(IdealLoopTree* loop, Node_List &old_new) {
|
||||
}
|
||||
}
|
||||
|
||||
// May not have gone thru igvn yet so don't use _igvn.type(phi) (PhaseIdealLoop::is_counted_loop() sets the iv phi's type)
|
||||
const TypeInteger* phi_t = phi->bottom_type()->is_integer(bt);
|
||||
assert(phi_t->hi_as_long() >= phi_t->lo_as_long(), "dead phi?");
|
||||
iters_limit = checked_cast<int>(MIN2((julong)iters_limit, (julong)(phi_t->hi_as_long() - phi_t->lo_as_long())));
|
||||
|
||||
// We need a safepoint to insert empty predicates for the inner loop.
|
||||
SafePointNode* safepoint;
|
||||
if (bt == T_INT && head->as_CountedLoop()->is_strip_mined()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user