1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/Verifier/inalloca1.ll
Nikita Popov b227a46d3d [Verifier] Improve incompatible attribute type check
A couple of attributes had explicit checks for incompatibility
with pointer types. However, this is already handled generically
by the typeIncompatible() check. We can drop these after adding
SwiftError to typeIncompatible().

However, the previous implementation of the check prints out all
attributes that are incompatible with a given type, even though
those attributes aren't actually used. This has the annoying
result that the error message changes every time a new attribute
is added to the list. Improve this by explicitly finding which
attribute isn't compatible and printing just that.
2021-07-14 21:02:10 +02:00

35 lines
1.1 KiB
LLVM

; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
declare void @a(i64* byval(i64) inalloca(i64) %p)
; CHECK: Attributes {{.*}} are incompatible
declare void @b(i64* inreg inalloca(i64) %p)
; CHECK: Attributes {{.*}} are incompatible
declare void @c(i64* sret(i64) inalloca(i64) %p)
; CHECK: Attributes {{.*}} are incompatible
declare void @d(i64* nest inalloca(i64) %p)
; CHECK: Attributes {{.*}} are incompatible
declare void @e(i64* readonly inalloca(i64) %p)
; CHECK: Attributes {{.*}} are incompatible
declare void @f(void ()* inalloca(void()) %p)
; CHECK: Attribute 'inalloca' does not support unsized types
declare void @g(i32* inalloca(i32) %p, i32 %p2)
; CHECK: inalloca isn't on the last parameter!
; CHECK: Attribute 'inalloca' type does not match parameter!
; CHECK-NEXT: void (i32*)* @inalloca_mismatched_pointee_type0
define void @inalloca_mismatched_pointee_type0(i32* inalloca(i8)) {
ret void
}
; CHECK: Attribute 'inalloca(i8)' applied to incompatible type!
; CHECK-NEXT: void (i8)* @inalloca_not_pointer
define void @inalloca_not_pointer(i8 inalloca(i8)) {
ret void
}