forked from OSchip/llvm-project
90 lines
3.3 KiB
LLVM
90 lines
3.3 KiB
LLVM
; RUN: sed -e s/.T1:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK1 %s
|
|
; RUN: sed -e s/.T2:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK2 %s
|
|
; RUN: sed -e s/.T3:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK3 %s
|
|
; RUN: sed -e s/.T4:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK4 %s
|
|
; RUN: sed -e s/.T5:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK5 %s
|
|
; RUN: sed -e s/.T6:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK6 %s
|
|
; RUN: sed -e s/.T7:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK7 %s
|
|
; RUN: sed -e s/.T8:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK8 %s
|
|
; RUN: sed -e s/.T9:// %s | not llvm-as -disable-output 2>&1 | FileCheck --check-prefix=CHECK9 %s
|
|
|
|
;T1: define void @f() {
|
|
;T1: entry:
|
|
;T1: ; operator constraint requires an operator
|
|
;T1: catchret undef to label %entry
|
|
;T1: ; CHECK1: [[@LINE-1]]:15: error: Catchpad value required in this position
|
|
;T1: }
|
|
|
|
;T2: define void @f() {
|
|
;T2: entry:
|
|
;T2: %x = cleanuppad []
|
|
;T2: ; catchret's first operand's operator must be catchpad
|
|
;T2: catchret %x to label %entry
|
|
;T2: ; CHECK2: [[@LINE-1]]:15: error: '%x' is not a catchpad
|
|
;T2: }
|
|
|
|
;T3: define void @f() {
|
|
;T3: entry:
|
|
;T3: ; catchret's first operand's operator must be catchpad
|
|
;T3: ; (forward reference case)
|
|
;T3: catchret %x to label %next
|
|
;T3: ; CHECK3: [[@LINE-1]]:15: error: '%x' is not a catchpad
|
|
;T3: next:
|
|
;T3: %x = cleanuppad []
|
|
;T3: ret void
|
|
;T3: }
|
|
|
|
;T4: define void @f() {
|
|
;T4: entry:
|
|
;T4: ; operator constraint requires an operator
|
|
;T4: cleanupret undef unwind label %entry
|
|
;T4: ; CHECK4: [[@LINE-1]]:17: error: Cleanuppad value required in this position
|
|
;T4: }
|
|
|
|
;T5: define void @f() {
|
|
;T5: entry:
|
|
;T5: %x = catchpad []
|
|
;T5: to label %next unwind label %entry
|
|
;T5: next:
|
|
;T5: ; cleanupret first operand's operator must be cleanuppad
|
|
;T5: cleanupret %x unwind to caller
|
|
;T5: ; CHECK5: [[@LINE-1]]:17: error: '%x' is not a cleanuppad
|
|
;T5: }
|
|
|
|
;T6: define void @f() {
|
|
;T6: entry:
|
|
;T6: ; cleanupret's first operand's operator must be cleanuppad
|
|
;T6: ; (forward reference case)
|
|
;T6: cleanupret %x unwind label %next
|
|
;T6: ; CHECK6: [[@LINE-1]]:17: error: '%x' is not a cleanuppad
|
|
;T6: next:
|
|
;T6: %x = catchpad [] to label %entry unwind label %next
|
|
;T6: }
|
|
|
|
;T7: define void @f() {
|
|
;T7: entry:
|
|
;T7: ; operator constraint requires an operator
|
|
;T7: cleanupendpad undef unwind to caller
|
|
;T7: ; CHECK7: [[@LINE-1]]:20: error: Cleanuppad value required in this position
|
|
;T7: }
|
|
|
|
;T8: define void @f() {
|
|
;T8: entry:
|
|
;T8: %x = catchpad []
|
|
;T8: to label %next unwind label %entry
|
|
;T8: next:
|
|
;T8: ; cleanupret first operand's operator must be cleanuppad
|
|
;T8: cleanupendpad %x unwind label next
|
|
;T8: ; CHECK8: [[@LINE-1]]:20: error: '%x' is not a cleanuppad
|
|
;T8: }
|
|
|
|
;T9: define void @f() {
|
|
;T9: entry:
|
|
;T9: ; cleanupret's first operand's operator must be cleanuppad
|
|
;T9: ; (forward reference case)
|
|
;T9: cleanupendpad %x unwind label %next
|
|
;T9: ; CHECK9: [[@LINE-1]]:20: error: '%x' is not a cleanuppad
|
|
;T9: next:
|
|
;T9: %x = catchpad [] to label %entry unwind label %next
|
|
;T9: }
|