diff options
Diffstat (limited to 'llvm/test/Transforms/CallSiteSplitting/callsite-no-splitting.ll')
-rw-r--r-- | llvm/test/Transforms/CallSiteSplitting/callsite-no-splitting.ll | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/llvm/test/Transforms/CallSiteSplitting/callsite-no-splitting.ll b/llvm/test/Transforms/CallSiteSplitting/callsite-no-splitting.ll new file mode 100644 index 00000000000..25b4cb23be6 --- /dev/null +++ b/llvm/test/Transforms/CallSiteSplitting/callsite-no-splitting.ll @@ -0,0 +1,42 @@ +; RUN: opt < %s -callsite-splitting -S | FileCheck %s +; RUN: opt < %s -passes='function(callsite-splitting)' -S | FileCheck %s + +define i32 @callee(i32*, i32, i32) { + ret i32 10 +} + +; CHECK-LABEL: @test_preds_equal +; CHECK-NOT: split +; CHECK: br i1 %cmp, label %Tail, label %Tail +define i32 @test_preds_equal(i32* %a, i32 %v, i32 %p) { +TBB: + %cmp = icmp eq i32* %a, null + br i1 %cmp, label %Tail, label %Tail +Tail: + %r = call i32 @callee(i32* %a, i32 %v, i32 %p) + ret i32 %r +} + +define void @fn1(i16 %p1) { +entry: + ret void +} + +define void @fn2() { + ret void + +; Unreachable code below + +for.inc: ; preds = %for.inc + br i1 undef, label %for.end6, label %for.inc + +for.end6: ; preds = %for.inc + br i1 undef, label %lor.rhs, label %lor.end + +lor.rhs: ; preds = %for.end6 + br label %lor.end + +lor.end: ; preds = %for.end6, %lor.rhs + call void @fn1(i16 0) + ret void +} |