summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/SimplifyCFG/empty-catchpad.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/empty-catchpad.ll')
-rw-r--r--llvm/test/Transforms/SimplifyCFG/empty-catchpad.ll115
1 files changed, 0 insertions, 115 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/empty-catchpad.ll b/llvm/test/Transforms/SimplifyCFG/empty-catchpad.ll
deleted file mode 100644
index 2926cd3f7dc..00000000000
--- a/llvm/test/Transforms/SimplifyCFG/empty-catchpad.ll
+++ /dev/null
@@ -1,115 +0,0 @@
-; RUN: opt < %s -simplifycfg -S | FileCheck %s
-
-declare void @f()
-declare void @llvm.foo(i32) nounwind
-declare void @ProcessCLRException()
-
-define void @test1() personality void ()* @ProcessCLRException {
-entry:
- invoke void @f()
- to label %exit unwind label %exn.dispatch
-exn.dispatch:
- %cs = catchswitch within none [label %pad1, label %pad2] unwind to caller
-pad1:
- %cp1 = catchpad within %cs [i32 1]
- call void @llvm.foo(i32 1)
- catchret from %cp1 to label %exit
-pad2:
- %cp2 = catchpad within %cs [i32 2]
- unreachable
-exit:
- ret void
-}
-; Remove unreachble catch2, leave catch1 as-is
-; CHECK-LABEL: define void @test1()
-; CHECK: %cs = catchswitch within none [label %pad1] unwind to caller
-; CHECK-NOT: catchpad
-; CHECK: %cp1 = catchpad within %cs [i32 1]
-; CHECK-NOT: catchpad
-
-; Remove both catchpads and the catchswitch from exn.dispatch
-; CHECK-LABEL: define void @test2()
-define void @test2() personality void ()* @ProcessCLRException {
-entry:
- invoke void @f()
- to label %via.cleanup unwind label %exn.dispatch
- ; CHECK-NOT: invoke
- ; CHECK: call void @f()
-via.cleanup:
- invoke void @f()
- to label %via.catchswitch unwind label %cleanup.inner
-cleanup.inner:
- %cp.inner = cleanuppad within none []
- call void @llvm.foo(i32 0)
- cleanupret from %cp.inner unwind label %exn.dispatch
- ; CHECK: cleanupret from %cp.inner unwind to caller
-via.catchswitch:
- invoke void @f()
- to label %exit unwind label %dispatch.inner
-dispatch.inner:
- %cs.inner = catchswitch within none [label %pad.inner] unwind label %exn.dispatch
- ; CHECK: %cs.inner = catchswitch within none [label %pad.inner] unwind to caller
-pad.inner:
- %catch.inner = catchpad within %cs.inner [i32 0]
- ; CHECK: %catch.inner = catchpad within %cs.inner
- call void @llvm.foo(i32 1)
- catchret from %catch.inner to label %exit
-exn.dispatch:
- %cs = catchswitch within none [label %pad1, label %pad2] unwind to caller
- ; CHECK-NOT: catchswitch within
- ; CHECK-NOT: catchpad
-pad1:
- catchpad within %cs [i32 1]
- unreachable
-pad2:
- catchpad within %cs [i32 2]
- unreachable
-exit:
- ret void
-}
-
-; Same as @test2, but exn.dispatch catchswitch has an unwind dest that
-; preds need to be reidrected to
-; CHECK-LABEL: define void @test3()
-define void @test3() personality void ()* @ProcessCLRException {
-entry:
- invoke void @f()
- to label %via.cleanup unwind label %exn.dispatch
- ; CHECK: invoke void @f()
- ; CHECK-NEXT: to label %via.cleanup unwind label %cleanup
-via.cleanup:
- invoke void @f()
- to label %via.catchswitch unwind label %cleanup.inner
-cleanup.inner:
- %cp.inner = cleanuppad within none []
- call void @llvm.foo(i32 0)
- cleanupret from %cp.inner unwind label %exn.dispatch
- ; CHECK: cleanupret from %cp.inner unwind label %cleanup
-via.catchswitch:
- invoke void @f()
- to label %exit unwind label %dispatch.inner
-dispatch.inner:
- %cs.inner = catchswitch within none [label %pad.inner] unwind label %exn.dispatch
- ; CHECK: %cs.inner = catchswitch within none [label %pad.inner] unwind label %cleanup
-pad.inner:
- %catch.inner = catchpad within %cs.inner [i32 0]
- ; CHECK: %catch.inner = catchpad within %cs.inner
- call void @llvm.foo(i32 1)
- catchret from %catch.inner to label %exit
-exn.dispatch:
- %cs = catchswitch within none [label %pad1, label %pad2] unwind label %cleanup
- ; CHECK-NOT: catchswitch within
- ; CHECK-NOT: catchpad
-pad1:
- catchpad within %cs [i32 1]
- unreachable
-pad2:
- catchpad within %cs [i32 2]
- unreachable
-cleanup:
- %cp = cleanuppad within none []
- call void @llvm.foo(i32 0)
- cleanupret from %cp unwind to caller
-exit:
- ret void
-}
OpenPOWER on IntegriCloud