< prev index next >
src/share/vm/opto/loopUnswitch.cpp
Print this page
*** 372,385 ****
tty->print_cr("CountedLoopReserveKit::create_reserve: %d not valid counted loop", cl->_idx);
}
return false; // skip malformed counted loop
}
if (!cl->is_main_loop()) {
if (TraceLoopOpts) {
! tty->print_cr("CountedLoopReserveKit::create_reserve: %d not main loop", cl->_idx);
}
- return false; // skip normal, pre, and post loops
}
_lp = _lpt->_head->as_Loop();
_lp_reserved = _phase->create_reserve_version_of_loop(_lpt, this);
--- 372,392 ----
tty->print_cr("CountedLoopReserveKit::create_reserve: %d not valid counted loop", cl->_idx);
}
return false; // skip malformed counted loop
}
if (!cl->is_main_loop()) {
+ bool loop_not_canonical = true;
+ if (cl->is_post_loop() && (cl->slp_max_unroll() > 0)) {
+ loop_not_canonical = false;
+ }
+ // only reject some loop forms
+ if (loop_not_canonical) {
if (TraceLoopOpts) {
! tty->print_cr("CountedLoopReserveKit::create_reserve: %d not canonical loop", cl->_idx);
! }
! return false; // skip normal, pre, and post (conditionally) loops
}
}
_lp = _lpt->_head->as_Loop();
_lp_reserved = _phase->create_reserve_version_of_loop(_lpt, this);
< prev index next >