diff options
Diffstat (limited to 'test/Sema/dllimport.c')
-rw-r--r-- | test/Sema/dllimport.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/test/Sema/dllimport.c b/test/Sema/dllimport.c index a7fb00e3f773c..988a8e33a7ef6 100644 --- a/test/Sema/dllimport.c +++ b/test/Sema/dllimport.c @@ -2,20 +2,21 @@ // RUN: %clang_cc1 -triple x86_64-win32 -fsyntax-only -fms-extensions -verify -std=c11 -DMS %s // RUN: %clang_cc1 -triple i686-mingw32 -fsyntax-only -fms-extensions -verify -std=c11 -DGNU %s // RUN: %clang_cc1 -triple x86_64-mingw32 -fsyntax-only -fms-extensions -verify -std=c99 -DGNU %s +// RUN: %clang_cc1 -triple aarch64-win32 -fsyntax-only -fms-extensions -verify -std=c99 -DMS %s // Invalid usage. __declspec(dllimport) typedef int typedef1; -// expected-warning@-1{{'dllimport' attribute only applies to variables and functions}} +// expected-warning@-1{{'dllimport' attribute only applies to functions, variables, classes, and Objective-C interfaces}} typedef __declspec(dllimport) int typedef2; -// expected-warning@-1{{'dllimport' attribute only applies to variables and functions}} +// expected-warning@-1{{'dllimport' attribute only applies to}} typedef int __declspec(dllimport) typedef3; -// expected-warning@-1{{'dllimport' attribute only applies to variables and functions}} +// expected-warning@-1{{'dllimport' attribute only applies to}} typedef __declspec(dllimport) void (*FunTy)(); -// expected-warning@-1{{'dllimport' attribute only applies to variables and functions}} +// expected-warning@-1{{'dllimport' attribute only applies to}} enum __declspec(dllimport) Enum { EnumVal }; -// expected-warning@-1{{'dllimport' attribute only applies to variables and functions}} +// expected-warning@-1{{'dllimport' attribute only applies to}} struct __declspec(dllimport) Record {}; -// expected-warning@-1{{'dllimport' attribute only applies to variables and functions}} +// expected-warning@-1{{'dllimport' attribute only applies to}} @@ -210,9 +211,14 @@ __declspec(dllimport) void redecl6(); void redecl7(); __declspec(dllimport) inline void redecl7() {} -// PR31069: Don't crash trying to merge attributes for redeclaration of invalid decl. +// PR31069: Don't crash trying to merge attributes for redeclaration of invalid +// decl. void __declspec(dllimport) redecl8(unknowntype X); // expected-error{{unknown type name 'unknowntype'}} void redecl8(unknowntype X) { } // expected-error{{unknown type name 'unknowntype'}} +// PR32021: Similarly, don't crash trying to merge attributes from a valid +// decl to an invalid redeclaration. +void __declspec(dllimport) redecl9(void); // expected-note{{previous declaration is here}} +int redecl9(void) {} // expected-error{{conflicting types for 'redecl9'}} // External linkage is required. __declspec(dllimport) static int staticFunc(); // expected-error{{'staticFunc' must have external linkage when declared 'dllimport'}} |