llvm-project/llvm/test/Assembler/invalid-OperatorConstraint.ll

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: }