summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX
diff options
context:
space:
mode:
authorNico Rieck <nico.rieck@gmail.com>2014-02-26 21:27:13 +0000
committerNico Rieck <nico.rieck@gmail.com>2014-02-26 21:27:13 +0000
commit8e9791f62c453e80c50c7ad342b10f969eeffd0d (patch)
tree38c9e5e6a6dbc68c246e3a6985f37c86ab3fa364 /clang/test/SemaCXX
parentb3d4821ae5d186759bb9c084994f2532cb3d0dbd (diff)
downloadbcm5719-llvm-8e9791f62c453e80c50c7ad342b10f969eeffd0d.tar.gz
bcm5719-llvm-8e9791f62c453e80c50c7ad342b10f969eeffd0d.zip
Sema: Definition of dllimport globals is not allowed
Upgrades the warning to an error and clarifies the message by treating the definition as error instead of the attribute. llvm-svn: 202300
Diffstat (limited to 'clang/test/SemaCXX')
-rw-r--r--clang/test/SemaCXX/dllexport.cpp6
-rw-r--r--clang/test/SemaCXX/dllimport.cpp14
2 files changed, 12 insertions, 8 deletions
diff --git a/clang/test/SemaCXX/dllexport.cpp b/clang/test/SemaCXX/dllexport.cpp
index 114ebd02bbf..64763834956 100644
--- a/clang/test/SemaCXX/dllexport.cpp
+++ b/clang/test/SemaCXX/dllexport.cpp
@@ -161,8 +161,8 @@ __declspec(dllexport) __declspec(dllimport) extern int PrecedenceExternGlobal2B;
__attribute__((dllimport, dllexport)) int PrecedenceGlobal1A; // expected-warning{{'dllimport' attribute ignored}}
__declspec(dllimport) __declspec(dllexport) int PrecedenceGlobal1B; // expected-warning{{'dllimport' attribute ignored}}
-__attribute__((dllexport, dllimport)) int PrecedenceGlobal2A; // expected-warning{{'dllimport' attribute cannot be specified on a definition}}
-__declspec(dllexport) __declspec(dllimport) int PrecedenceGlobal2B; // expected-warning{{'dllimport' attribute cannot be specified on a definition}}
+__attribute__((dllexport, dllimport)) int PrecedenceGlobal2A; // expected-warning{{'dllimport' attribute ignored}}
+__declspec(dllexport) __declspec(dllimport) int PrecedenceGlobal2B; // expected-warning{{'dllimport' attribute ignored}}
__declspec(dllexport) extern int PrecedenceExternGlobalRedecl1;
__declspec(dllimport) extern int PrecedenceExternGlobalRedecl1; // expected-warning{{'dllimport' attribute ignored}}
@@ -171,7 +171,7 @@ __declspec(dllimport) extern int PrecedenceExternGlobalRedecl2; // expected-warn
__declspec(dllexport) extern int PrecedenceExternGlobalRedecl2;
__declspec(dllexport) extern int PrecedenceGlobalRedecl1;
-__declspec(dllimport) int PrecedenceGlobalRedecl1; // expected-warning{{'dllimport' attribute cannot be specified on a definition}}
+__declspec(dllimport) int PrecedenceGlobalRedecl1; // expected-warning{{'dllimport' attribute ignored}}
__declspec(dllimport) extern int PrecedenceGlobalRedecl2; // expected-warning{{'dllimport' attribute ignored}}
__declspec(dllexport) int PrecedenceGlobalRedecl2;
diff --git a/clang/test/SemaCXX/dllimport.cpp b/clang/test/SemaCXX/dllimport.cpp
index d04a4b990aa..4a3ee202ad9 100644
--- a/clang/test/SemaCXX/dllimport.cpp
+++ b/clang/test/SemaCXX/dllimport.cpp
@@ -32,16 +32,17 @@ enum __declspec(dllimport) Enum {}; // expected-warning{{'dllimport' attribute o
// Import declaration.
__declspec(dllimport) extern int ExternGlobalDecl;
-// dllimport implies a declaration. FIXME: This should not warn.
-__declspec(dllimport) int GlobalDecl; // expected-warning{{'dllimport' attribute cannot be specified on a definition}}
+// dllimport implies a declaration.
+__declspec(dllimport) int GlobalDecl;
// Not allowed on definitions.
-__declspec(dllimport) int GlobalInit1 = 1; // expected-warning{{'dllimport' attribute cannot be specified on a definition}}
-int __declspec(dllimport) GlobalInit2 = 1; // expected-warning{{'dllimport' attribute cannot be specified on a definition}}
+__declspec(dllimport) extern int ExternGlobalInit = 1; // expected-error{{definition of dllimport data}}
+__declspec(dllimport) int GlobalInit1 = 1; // expected-error{{definition of dllimport data}}
+int __declspec(dllimport) GlobalInit2 = 1; // expected-error{{definition of dllimport data}}
// Declare, then reject definition.
__declspec(dllimport) extern int ExternGlobalDeclInit;
-int ExternGlobalDeclInit = 1; // expected-warning{{'dllimport' attribute cannot be specified on a definition}}
+int ExternGlobalDeclInit = 1; // expected-error{{definition of dllimport data}}
// Redeclarations
__declspec(dllimport) extern int GlobalRedecl1;
@@ -49,7 +50,10 @@ __declspec(dllimport) extern int GlobalRedecl1;
// Import in local scope.
void functionScope() {
+ __declspec(dllimport) int LocalVarDecl;
+ __declspec(dllimport) int LocalVarDef = 1; // expected-error{{definition of dllimport data}}
__declspec(dllimport) extern int ExternLocalVarDecl;
+ __declspec(dllimport) extern int ExternLocalVarDef = 1; // expected-error{{definition of dllimport data}}
}
OpenPOWER on IntegriCloud