< 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 >