Enh, I've gone ahead and done it the other way for now again. Both sets of code are there still if we want to change it back :)
-eric On Wed, Apr 17, 2013 at 10:27 AM, Richard Smith <[email protected]> wrote: > I don't think this is obvious, since we reduce test coverage either way (if > we XFAIL, we don't test some hosts, and if we set a triple we only test one > target). For other tests I've been specifying an explicit triple, so we at > least exercise the code when built for darwin10; I think I have a slight > preference for that. > > > On Wed, Apr 17, 2013 at 10:04 AM, Eric Christopher <[email protected]> > wrote: >> >> 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
