diff options
Diffstat (limited to 'test/Transforms/SCCP/ipsccp-conditional.ll')
-rw-r--r-- | test/Transforms/SCCP/ipsccp-conditional.ll | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/Transforms/SCCP/ipsccp-conditional.ll b/test/Transforms/SCCP/ipsccp-conditional.ll new file mode 100644 index 000000000000..b98bbf44be68 --- /dev/null +++ b/test/Transforms/SCCP/ipsccp-conditional.ll @@ -0,0 +1,19 @@ +; RUN: llvm-as < %s | opt -ipsccp | llvm-dis | \ +; RUN: grep -v {ret i32 0} | grep -v {ret i32 undef} | not grep ret + +define internal i32 @bar(i32 %A) { + %C = icmp eq i32 %A, 0 ; <i1> [#uses=1] + br i1 %C, label %T, label %F +T: ; preds = %0 + %B = call i32 @bar( i32 0 ) ; <i32> [#uses=0] + ret i32 0 +F: ; preds = %0 + %C.upgrd.1 = call i32 @bar( i32 1 ) ; <i32> [#uses=1] + ret i32 %C.upgrd.1 +} + +define i32 @foo() { + %X = call i32 @bar( i32 0 ) ; <i32> [#uses=1] + ret i32 %X +} + |