> I was fiddling around with the loop unrolling pass and noticed a check > in decide_unroll_* functions (in the patch). The comment on top of this > check says > "/* If we were not asked to unroll this loop, just return back silently. > */" > However the check returns when loop->unroll == 0 rather than 1. > > The check was added in r255106 where the ChangeLog suggests that the > actual intention was probably to check the value 1 and not 0.
No, this is intended, 0 is the default value of the field, not 1. And note that decide_unroll_constant_iterations, decide_unroll_runtime_iterations and decide_unroll_stupid *cannot* be called with loop->unroll == 1 because of this check in decide_unrolling: if (loop->unroll == 1) { if (dump_file) fprintf (dump_file, ";; Not unrolling loop, user didn't want it unrolled\n"); continue; } > Tested on aarch64-none-elf with one new regression: > FAIL: gcc.dg/pr40209.c (test for excess errors) > This fails because the changes cause the loop to unroll 3 times using > unroll_stupid and that shows up as excess error due -fopt-info. This > option was added in r202077 but I am not sure why this particular test > was chosen for it. That's a regression, there should be no unrolling. -- Eric Botcazou