]> granicus.if.org Git - clang/commitdiff
Test the '__thread' before 'static' warning.
authorHans Wennborg <hans@hanshq.net>
Mon, 4 Jun 2012 10:19:34 +0000 (10:19 +0000)
committerHans Wennborg <hans@hanshq.net>
Mon, 4 Jun 2012 10:19:34 +0000 (10:19 +0000)
Also fix the '__thread' before 'extern' case.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157921 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticParseKinds.td
test/Sema/thread-specifier.c

index e251af43e4df6fb906ad3c5632f8facd7b610cdd..a5057c9d3200a88663c45ed1939362306415f8cd 100644 (file)
@@ -37,7 +37,7 @@ def ext_plain_complex : ExtWarn<
   "plain '_Complex' requires a type specifier; assuming '_Complex double'">;
 def ext_integer_complex : Extension<
   "complex integer types are an extension">;
-def ext_thread_before : Extension<"'__thread' before 'static'">;
+def ext_thread_before : Extension<"'__thread' before '%0'">;
 
 def ext_empty_struct_union : Extension<
   "empty %select{struct|union}0 is a GNU extension">, InGroup<GNU>;
index 9ec88c5219456688eb501544ad6ba992fa35d67c..0d439b1669c17442694b6603ec588f099d0aaa4d 100644 (file)
@@ -1,19 +1,21 @@
-// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -verify %s
+// RUN: %clang_cc1 -triple i686-pc-linux-gnu -fsyntax-only -verify -pedantic %s
 
 __thread int t1;
-__thread extern int t2;
-__thread static int t3;
+__thread extern int t2; // expected-warning {{'__thread' before 'extern'}}
+__thread static int t3; // expected-warning {{'__thread' before 'static'}}
 __thread __private_extern__ int t4;
 struct t5 { __thread int x; }; // expected-error {{type name does not allow storage class to be specified}}
 __thread int t6(); // expected-error {{'__thread' is only allowed on variable declarations}}
+
 int f(__thread int t7) { // expected-error {{'__thread' is only allowed on variable declarations}}
   __thread int t8; // expected-error {{'__thread' variables must have global storage}}
-  __thread extern int t9;
-  __thread static int t10;
+  extern __thread int t9;
+  static __thread int t10;
   __thread __private_extern__ int t11;
   __thread auto int t12; // expected-error {{'__thread' variables must have global storage}}
   __thread register int t13; // expected-error {{'__thread' variables must have global storage}}
 }
+
 __thread typedef int t14; // expected-error {{'__thread' is only allowed on variable declarations}}
 __thread int t15; // expected-note {{previous definition is here}}
 int t15; // expected-error {{non-thread-local declaration of 't15' follows thread-local declaration}}