| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-vrp1-details" } */ |
| /* LLVM LOCAL test not applicable */ |
| /* { dg-require-fdump "" } */ |
| |
| extern void abort (); |
| int tree_code_length[100]; |
| |
| blah (int code1) |
| { |
| unsigned char D18670; |
| |
| if (code1 != 53) goto L0; else goto L1; |
| |
| L0: |
| abort (); |
| |
| L1: |
| D18670 = tree_code_length[53]; |
| if (D18670 <= 1) goto L2; else goto L3; |
| |
| L2: |
| abort (); |
| |
| L3: |
| if (D18670 == 2) goto L4; else goto L5; |
| |
| L4: |
| abort (); |
| |
| L5: |
| arf (); |
| if (code1 != 53) goto L6; else goto L7; |
| |
| L6: |
| abort (); |
| |
| L7: |
| if (D18670 <= 2) goto L8; else goto L9; |
| |
| L8: |
| abort (); |
| |
| L9: |
| return; |
| |
| } |
| |
| /* The second test of (code1 != 53) and the test (D18670 <= 2) are |
| both totally subsumed by earlier tests and thus should be folded |
| away using VRP. */ |
| /* { dg-final { scan-tree-dump-times "Folding predicate" 2 "vrp1" } } */ |
| /* { dg-final { cleanup-tree-dump "vrp1" } } */ |
| |