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
11 ;T1: define void @f() {
13 ;T1: catchret from undef to label %next
14 ;T1: ; CHECK1: CatchReturnInst needs to be provided a CatchPad
19 ;T2: define void @f() {
21 ;T2: %x = cleanuppad within none []
22 ;T2: ; catchret's first operand's operator must be catchpad
23 ;T2: catchret from %x to label %entry
24 ;T2: ; CHECK2: CatchReturnInst needs to be provided a CatchPad
27 ;T3: define void @f() {
29 ;T3: cleanupret from undef unwind label %next
30 ;T3: ; CHECK3: CleanupReturnInst needs to be provided a CleanupPad
35 ;T4: define void @f() {
37 ;T4: %cs = catchswitch within none [label %next] unwind to caller
39 ;T4: %x = catchpad within %cs []
40 ;T4: ; cleanupret first operand's operator must be cleanuppad
41 ;T4: cleanupret from %x unwind to caller
42 ;T4: ; CHECK4: CleanupReturnInst needs to be provided a CleanupPad
45 ;T5: define void @f() personality void ()* @g {
49 ;T5: %cs = catchswitch within none [label %catch] unwind to caller
51 ;T5: catchpad within %cs []
54 ;T5: cleanuppad within %cs []
55 ;T5: ; CHECK5: CleanupPadInst has an invalid parent
59 ;T6: define void @f() personality void ()* @g {
63 ;T6: %cs1 = catchswitch within none [label %catch1] unwind label %catch2
64 ;T6: ; CHECK6: Block containg CatchPadInst must be jumped to only by its catchswitch
66 ;T6: catchpad within %cs1 []
69 ;T6: %cs2 = catchswitch within none [label %catch2] unwind to caller
71 ;T6: catchpad within %cs2 []
75 ;T7: define void @f() personality void ()* @g {
79 ;T7: %cs1 = catchswitch within none [label %catch1] unwind to caller
81 ;T7: catchpad within %cs1 []
84 ;T7: %cs2 = catchswitch within %cs1 [label %catch2] unwind to caller
85 ;T7: ; CHECK7: CatchSwitchInst has an invalid parent
87 ;T7: catchpad within %cs2 []