| /* { dg-options "-O3 -fdump-rtl-loop2_unroll -fno-unroll-loops -fpeel-loops" } */ |
| void abort(); |
| |
| int a[1000]; |
| int |
| __attribute__ ((noinline)) |
| t() |
| { |
| int i; |
| for (i=0;i<1000;i++) |
| if (!a[i]) |
| return 1; |
| abort (); |
| } |
| main() |
| { |
| int i; |
| for (i=0;i<1000;i++) |
| t(); |
| return 0; |
| } |
| /* { dg-final-use { scan-rtl-dump "Considering simply peeling loop" "loop2_unroll" } } */ |
| /* In fact one peeling is enough; we however mispredict number of iterations of the loop |
| at least until loop_ch is schedule ahead of profiling pass. */ |
| /* { dg-final-use { cleanup-rtl-dump "loop2_unroll" } } */ |