rtl-optimization/118298 - constant iteration loops and #pragma unroll
Checks
Commit Message
When the RTL unroller handles constant iteration loops it bails out
prematurely when heuristics wouldn't apply any unrolling before
checking #pragma unroll.
Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.
PR rtl-optimization/118298
* loop-unroll.cc (decide_unroll_constant_iterations): Honor
loop->unroll even if the loop is too big for heuristics.
---
gcc/loop-unroll.cc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
@@ -372,7 +372,8 @@ decide_unroll_constant_iterations (class loop *loop, int flags)
nunroll = targetm.loop_unroll_adjust (nunroll, loop);
/* Skip big loops. */
- if (nunroll <= 1)
+ if (nunroll <= 1
+ && !(loop->unroll > 1 && loop->unroll < USHRT_MAX))
{
if (dump_file)
fprintf (dump_file, ";; Not considering loop, is too big\n");