| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-vrp1-details" } */ |
| /* LLVM LOCAL test not applicable */ |
| /* { dg-require-fdump "" } */ |
| |
| blah (int code1, int code2) |
| { |
| int i; |
| int n_sets; |
| |
| n_sets = (int) (code1 == 32); |
| if (code2 == 64) goto L2; else goto L3; |
| |
| L2: |
| aa (); |
| |
| L3: |
| if (n_sets > 1) goto L4; else goto L10; |
| |
| L4: |
| aos (); |
| i = 0; |
| goto L24; |
| |
| L10: |
| if (n_sets > 0) goto L25; else goto L8; |
| |
| L25: |
| i = 0; |
| |
| L24: |
| aob (); |
| i = i + 1; |
| if (i < n_sets) goto L24; else goto L8; |
| |
| L8: |
| return; |
| } |
| |
| |
| |
| /* The n_sets > 0 test can be simplified into n_sets == 1 since the |
| only way to reach the test is when n_sets <= 1, and the only value |
| which satisfies both conditions is n_sets == 1. */ |
| /* { dg-final { scan-tree-dump-times "Simplified relational" 1 "vrp1" } } */ |
| /* { dg-final { cleanup-tree-dump "vrp1" } } */ |
| |