diff options
Diffstat (limited to 'test/Transforms/InstCombine/readnone-maythrow.ll')
-rw-r--r-- | test/Transforms/InstCombine/readnone-maythrow.ll | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/readnone-maythrow.ll b/test/Transforms/InstCombine/readnone-maythrow.ll new file mode 100644 index 0000000000000..f01e90263a303 --- /dev/null +++ b/test/Transforms/InstCombine/readnone-maythrow.ll @@ -0,0 +1,34 @@ +; RUN: opt -S -instcombine < %s | FileCheck %s + +declare void @readnone_but_may_throw() readnone + +define void @f_0(i32* %ptr) { +; CHECK-LABEL: @f_0( +entry: +; CHECK: store i32 10, i32* %ptr +; CHECK-NEXT: call void @readnone_but_may_throw() +; CHECK-NEXT: store i32 20, i32* %ptr, align 4 +; CHECK: ret void + + store i32 10, i32* %ptr + call void @readnone_but_may_throw() + store i32 20, i32* %ptr + ret void +} + +define void @f_1(i1 %cond, i32* %ptr) { +; CHECK-LABEL: @f_1( +; CHECK: store i32 10, i32* %ptr +; CHECK-NEXT: call void @readnone_but_may_throw() + + store i32 10, i32* %ptr + call void @readnone_but_may_throw() + br i1 %cond, label %left, label %merge + +left: + store i32 20, i32* %ptr + br label %merge + +merge: + ret void +} |