blob: a882a4135100b0b98088fe303e53ae92585c5d80 [file] [edit]
// RUN: %clang_cc1 -Oz -triple x86_64-unknown-linux-gnu -fexceptions -fsyntax-only %s -verify
typedef __UINT64_TYPE__ uint64_t;
typedef enum _Unwind_Reason_Code _Unwind_Reason_Code;
typedef enum _Unwind_Action _Unwind_Action;
struct _Unwind_Exception;
struct _Unwind_Context;
int __swift_personality_int;
_Unwind_Reason_Code __swift_personality_v0(int version, _Unwind_Action action, uint64_t exception_class, struct _Unwind_Exception *exception, struct _Unwind_Context *context);
_Unwind_Reason_Code __swift_personality_v1(int version, _Unwind_Action action, uint64_t exception_class, struct _Unwind_Exception *exception, struct _Unwind_Context *context);
_Unwind_Reason_Code __swift_personality_v2(int version, _Unwind_Action action, uint64_t exception_class, struct _Unwind_Exception *exception, struct _Unwind_Context *context);
// expected-note@+2{{previous attribute is here}}
// expected-note@+1{{previous attribute is here}}
void __attribute__((__personality__(__swift_personality_v0))) function(void);
// expected-error@+1{{personality routine in declaration does not match previous declaration}}
void __attribute__((__personality__(__swift_personality_v1))) function(void);
// expected-note@+3{{previous attribute is here}}
// expected-error@+2{{personality routine in declaration does not match previous declaration}}
// expected-error@+1{{personality routine in declaration does not match previous declaration}}
void __attribute__((__personality__(__swift_personality_v1))) function(void) __attribute__((__personality__(__swift_personality_v2)));
// expected-error@+1{{'__personality__' argument is not a function}}
void __attribute__((__personality__(__swift_personality_int))) function(void) {
}
// expected-warning@+1{{'__personality__' attribute only applies to functions}}
int variable __attribute__((__personality__(__swift_personality_v0)));