1 ; RUN: sed -e s/.T1:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK1 %s
2 ; RUN: sed -e s/.T2:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK2 %s
3 ; RUN: sed -e s/.T3:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK3 %s
4 ; RUN: sed -e s/.T4:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK4 %s
5 ; RUN: sed -e s/.T5:// %s | not opt -verify -disable-output 2>&1 | FileCheck --check-prefix=CHECK5 %s
6 ; RUN: sed -e s/.T6:// %s | not opt -verify -disable-output 2>&1 | FileCheck --check-prefix=CHECK6 %s
7 ; RUN: sed -e s/.T7:// %s | not opt -verify -disable-output 2>&1 | FileCheck --check-prefix=CHECK7 %s
8 ; RUN: sed -e s/.T8:// %s | not opt -verify -disable-output 2>&1 | FileCheck --check-prefix=CHECK8 %s
12 ;T1: define void @f() {
14 ;T1: catchret from undef to label %next
15 ;T1: ; CHECK1: CatchReturnInst needs to be provided a CatchPad
20 ;T2: define void @f() {
22 ;T2: %x = cleanuppad within none []
23 ;T2: ; catchret's first operand's operator must be catchpad
24 ;T2: catchret from %x to label %entry
25 ;T2: ; CHECK2: CatchReturnInst needs to be provided a CatchPad
28 ;T3: define void @f() {
30 ;T3: cleanupret from undef unwind label %next
31 ;T3: ; CHECK3: CleanupReturnInst needs to be provided a CleanupPad
36 ;T4: define void @f() {
38 ;T4: %cs = catchswitch within none [label %next] unwind to caller
40 ;T4: %x = catchpad within %cs []
41 ;T4: ; cleanupret first operand's operator must be cleanuppad
42 ;T4: cleanupret from %x unwind to caller
43 ;T4: ; CHECK4: CleanupReturnInst needs to be provided a CleanupPad
46 ;T5: define void @f() personality void ()* @g {
50 ;T5: %cs = catchswitch within none [label %catch] unwind to caller
52 ;T5: catchpad within %cs []
55 ;T5: cleanuppad within %cs []
56 ;T5: ; CHECK5: CleanupPadInst has an invalid parent
60 ;T6: define void @f() personality void ()* @g {
64 ;T6: %cs1 = catchswitch within none [label %catch1] unwind label %catch2
65 ;T6: ; CHECK6: Block containg CatchPadInst must be jumped to only by its catchswitch
67 ;T6: catchpad within %cs1 []
70 ;T6: %cs2 = catchswitch within none [label %catch2] unwind to caller
72 ;T6: catchpad within %cs2 []
76 ;T7: define void @f() personality void ()* @g {
80 ;T7: %cs1 = catchswitch within none [label %catch1] unwind to caller
82 ;T7: catchpad within %cs1 []
85 ;T7: %cs2 = catchswitch within %cs1 [label %catch2] unwind to caller
86 ;T7: ; CHECK7: CatchSwitchInst has an invalid parent
88 ;T7: catchpad within %cs2 []
92 ;T8: define void @f() personality void ()* @g {
96 ;T8: %cs1 = catchswitch within none [ label %switch1 ] unwind to caller
97 ;T8: ; CHECK8: CatchSwitchInst handlers must be catchpads