Yeah, I've "Fixed" it at the moment. Have no opinion whether or not XFAILing it or just setting some arbitrary triple for the test is most useful. Thoughts?
-eric On Wed, Apr 17, 2013 at 5:06 AM, Richard Smith <[email protected]> wrote: > Thanks Eric for fixing this! Sorry this slipped my notice... WG21 has been > busy. > > > On Tue, Apr 16, 2013 at 5:48 PM, David Blaikie <[email protected]> wrote: >> >> On Mon, Apr 15, 2013 at 11:29 AM, David Dean <[email protected]> wrote: >> > Richard, >> > Can you XFAIL SemaCXX/cxx11-thread-local.cpp on darwin10? It's >> > passing on darwin11, but not darwin10. My understanding is that this is >> > expected. >> >> Still seeing this >> http://lab.llvm.org:8011/builders/clang-x86_64-darwin10-gdb >> >> > >> > On 15 Apr 2013, at 1:33 AM, Richard Smith <[email protected]> >> > wrote: >> > >> >> Author: rsmith >> >> Date: Mon Apr 15 03:33:22 2013 >> >> New Revision: 179517 >> >> >> >> URL: http://llvm.org/viewvc/llvm-project?rev=179517&view=rev >> >> Log: >> >> Local thread_local variables are implicitly 'static'. (This doesn't >> >> apply to _Thread_local nor __thread.) >> >> >> >> Added: >> >> cfe/trunk/test/SemaCXX/cxx11-thread-local.cpp >> >> Modified: >> >> cfe/trunk/lib/Sema/SemaDecl.cpp >> >> cfe/trunk/test/Sema/thread-specifier.c >> >> >> >> Modified: cfe/trunk/lib/Sema/SemaDecl.cpp >> >> URL: >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=179517&r1=179516&r2=179517&view=diff >> >> >> >> ============================================================================== >> >> --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) >> >> +++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Apr 15 03:33:22 2013 >> >> @@ -4687,8 +4687,7 @@ Sema::ActOnVariableDeclarator(Scope *S, >> >> "Parser allowed 'typedef' as storage class VarDecl."); >> >> VarDecl::StorageClass SC = >> >> StorageClassSpecToVarDeclStorageClass(SCSpec); >> >> >> >> - if (getLangOpts().OpenCL && !getOpenCLOptions().cl_khr_fp16) >> >> - { >> >> + if (getLangOpts().OpenCL && !getOpenCLOptions().cl_khr_fp16) { >> >> // OpenCL v1.2 s6.1.1.1: reject declaring variables of the half and >> >> // half array type (unless the cl_khr_fp16 extension is enabled). >> >> if (Context.getBaseElementType(R)->isHalfType()) { >> >> @@ -4705,6 +4704,16 @@ Sema::ActOnVariableDeclarator(Scope *S, >> >> SC = SC_None; >> >> } >> >> >> >> + // C++11 [dcl.stc]p4: >> >> + // When thread_local is applied to a variable of block scope the >> >> + // storage-class-specifier static is implied if it does not appear >> >> + // explicitly. >> >> + // Core issue: 'static' is not implied if the variable is declared >> >> 'extern'. >> >> + if (SCSpec == DeclSpec::SCS_unspecified && >> >> + D.getDeclSpec().getThreadStorageClassSpec() == >> >> + DeclSpec::TSCS_thread_local && DC->isFunctionOrMethod()) >> >> + SC = SC_Static; >> >> + >> >> IdentifierInfo *II = Name.getAsIdentifierInfo(); >> >> if (!II) { >> >> Diag(D.getIdentifierLoc(), diag::err_bad_variable_name) >> >> >> >> Modified: cfe/trunk/test/Sema/thread-specifier.c >> >> URL: >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/thread-specifier.c?rev=179517&r1=179516&r2=179517&view=diff >> >> >> >> ============================================================================== >> >> --- cfe/trunk/test/Sema/thread-specifier.c (original) >> >> +++ cfe/trunk/test/Sema/thread-specifier.c Mon Apr 15 03:33:22 2013 >> >> @@ -42,8 +42,6 @@ int f(__thread int t7) { // expected-err >> >> // expected-error@-2 {{'__thread' variables must have global >> >> storage}} >> >> #elif defined(C11) >> >> // expected-error@-4 {{'_Thread_local' variables must have global >> >> storage}} >> >> -#else >> >> - // expected-error@-6 {{'thread_local' variables must have global >> >> storage}} >> >> #endif >> >> extern __thread int t9; >> >> static __thread int t10; >> >> @@ -51,9 +49,9 @@ int f(__thread int t7) { // expected-err >> >> #if __cplusplus < 201103L >> >> __thread auto int t12a; // expected-error-re {{cannot combine with >> >> previous '(__thread|_Thread_local)' declaration specifier}} >> >> auto __thread int t12b; // expected-error {{cannot combine with >> >> previous 'auto' declaration specifier}} >> >> -#else >> >> - __thread auto t12a = 0; // expected-error-re {{'(t|_T)hread_local' >> >> variables must have global storage}} >> >> - auto __thread t12b = 0; // expected-error-re {{'(t|_T)hread_local' >> >> variables must have global storage}} >> >> +#elif !defined(CXX11) >> >> + __thread auto t12a = 0; // expected-error-re {{'_Thread_local' >> >> variables must have global storage}} >> >> + auto __thread t12b = 0; // expected-error-re {{'_Thread_local' >> >> variables must have global storage}} >> >> #endif >> >> __thread register int t13a; // expected-error-re {{cannot combine >> >> with previous '(__thread|_Thread_local|thread_local)' declaration >> >> specifier}} >> >> register __thread int t13b; // expected-error {{cannot combine with >> >> previous 'register' declaration specifier}} >> >> >> >> Added: cfe/trunk/test/SemaCXX/cxx11-thread-local.cpp >> >> URL: >> >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/cxx11-thread-local.cpp?rev=179517&view=auto >> >> >> >> ============================================================================== >> >> --- cfe/trunk/test/SemaCXX/cxx11-thread-local.cpp (added) >> >> +++ cfe/trunk/test/SemaCXX/cxx11-thread-local.cpp Mon Apr 15 03:33:22 >> >> 2013 >> >> @@ -0,0 +1,23 @@ >> >> +// RUN: %clang_cc1 -std=c++11 -verify %s >> >> + >> >> +struct S { >> >> + static thread_local int a; >> >> + static int b; // expected-note {{here}} >> >> + thread_local int c; // expected-error {{'thread_local' is only >> >> allowed on variable declarations}} >> >> + static thread_local int d; // expected-note {{here}} >> >> +}; >> >> + >> >> +thread_local int S::a; >> >> +thread_local int S::b; // expected-error {{thread-local declaration of >> >> 'b' follows non-thread-local declaration}} >> >> +thread_local int S::c; // expected-error {{non-static data member >> >> defined out-of-line}} >> >> +int S::d; // expected-error {{non-thread-local declaration of 'd' >> >> follows thread-local declaration}} >> >> + >> >> +thread_local int x[3]; >> >> +thread_local int y[3]; >> >> +thread_local int z[3]; // expected-note {{previous}} >> >> + >> >> +void f() { >> >> + thread_local int x; >> >> + static thread_local int y; >> >> + extern thread_local int z; // expected-error {{redefinition of 'z' >> >> with a different type}} >> >> +} >> >> >> >> >> >> _______________________________________________ >> >> cfe-commits mailing list >> >> [email protected] >> >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> > >> > -David >> > >> > >> > _______________________________________________ >> > cfe-commits mailing list >> > [email protected] >> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
