| ; RUN: llvm-reduce %s -o %t --abort-on-invalid-reduction --delta-passes=basic-blocks --test FileCheck --test-arg %s --test-arg --check-prefix=INTERESTING --test-arg --input-file |
| ; RUN: FileCheck %s --input-file %t --check-prefixes=CHECK,INTERESTING |
| |
| |
| ; CHECK-LABEL: define i32 @keep_callbr(ptr %p, i1 %cond) { |
| ; CHECK: entry1: |
| ; CHECK-NEXT: callbr void asm |
| ; INTERESTING: store i32 0, |
| ; INTERESTING: store i32 1, |
| |
| define i32 @keep_callbr(ptr %p, i1 %cond) { |
| entry1: |
| callbr void asm sideeffect "", "!i,~{dirflag},~{fpsr},~{flags}"() |
| to label %for.cond [label %preheader] |
| |
| for.cond: |
| store i32 0, ptr %p |
| ret i32 0 |
| |
| preheader: |
| store i32 1, ptr %p |
| ret i32 1 |
| } |
| |
| |
| ; CHECK-LABEL: define i32 @drop_callbr(ptr %p, i1 %cond) { |
| ; CHECK: entry1: |
| ; CHECK-NEXT: br |
| ; INTERESTING: store i32 0, |
| |
| define i32 @drop_callbr(ptr %p, i1 %cond) { |
| entry1: |
| callbr void asm sideeffect "", "!i,~{dirflag},~{fpsr},~{flags}"() |
| to label %for.cond [label %preheader] |
| |
| for.cond: |
| store i32 0, ptr %p |
| ret i32 0 |
| |
| preheader: |
| store i32 1, ptr %p |
| ret i32 1 |
| |
| } |