| /* { dg-options "-O2" } */ |
| /* PR optimization/11536 */ |
| /* Origin: samal@kam.mff.cuni.cz <samal@kam.mff.cuni.cz> */ |
| /* Testcase by Andrew Pinski <pinskia@physics.uc.edu> */ |
| |
| /* Verify that the loop optimizer doesn't use moving targets |
| to calculate the number of iterations of a loop. */ |
| |
| extern void abort(void); |
| |
| void foo(int) __attribute__((__noinline__)); |
| |
| void foo(int i) |
| { |
| abort(); |
| } |
| |
| int main() |
| { |
| int i; |
| int first= 0; |
| int last= 0; |
| |
| while (last<3) { |
| last = first; |
| |
| while (first<=last) { |
| first++; |
| |
| for (i=0;i<3;i++) |
| last++; |
| |
| if (last>10) |
| return 0; |
| } |
| |
| foo(first); |
| } |
| |
| return 0; |
| } |