| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-cddce1" } */ |
| |
| int main(void) |
| { |
| unsigned i, j; |
| |
| for (i = 1, j = 0; i != 0; i+=2) |
| { |
| j += 500; |
| if (j % 7) |
| { |
| j++; |
| } |
| else |
| { |
| j--; |
| } |
| } |
| |
| return 0; |
| } |
| |
| /* We now can prove the infiniteness of the loop during CCP but we |
| still want to eliminate the code inside the infinite loop. See PR45178. */ |
| |
| /* We should eliminate the inner condition, but the loop must be preserved |
| as it is infinite. Therefore there should be just one goto and no PHI |
| and no if. */ |
| /* { dg-final { scan-tree-dump-times "PHI " 0 "cddce1" } } */ |
| /* { dg-final { scan-tree-dump-times "if " 0 "cddce1" } } */ |
| /* { dg-final { scan-tree-dump-times "goto" 1 "cddce1" } } */ |