diff options
Diffstat (limited to 'test/Transforms/IPConstantProp/return-constant.ll')
-rw-r--r-- | test/Transforms/IPConstantProp/return-constant.ll | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/Transforms/IPConstantProp/return-constant.ll b/test/Transforms/IPConstantProp/return-constant.ll new file mode 100644 index 000000000000..381ef63cc88e --- /dev/null +++ b/test/Transforms/IPConstantProp/return-constant.ll @@ -0,0 +1,26 @@ +; RUN: llvm-as < %s | opt -ipconstprop -instcombine | \ +; RUN: llvm-dis | grep {ret i1 true} | count 2 +define internal i32 @foo(i1 %C) { + br i1 %C, label %T, label %F + +T: ; preds = %0 + ret i32 52 + +F: ; preds = %0 + ret i32 52 +} + +define i1 @caller(i1 %C) { + %X = call i32 @foo( i1 %C ) ; <i32> [#uses=1] + %Y = icmp ne i32 %X, 0 ; <i1> [#uses=1] + ret i1 %Y +} + +define i1 @invokecaller(i1 %C) { + %X = invoke i32 @foo( i1 %C ) to label %OK unwind label %FAIL ; <i32> [#uses=1] +OK: + %Y = icmp ne i32 %X, 0 ; <i1> [#uses=1] + ret i1 %Y +FAIL: + ret i1 false +} |