Author: rsmith Date: Fri Jan 27 15:28:37 2017 New Revision: 293333 URL: http://llvm.org/viewvc/llvm-project?rev=293333&view=rev Log: PR31783: Don't request the alignment of an invalid declaration.
Fixes an assertion failure on PS4 targets. Modified: cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/test/SemaCXX/auto-cxx0x.cpp Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=293333&r1=293332&r2=293333&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Jan 27 15:28:37 2017 @@ -10930,7 +10930,8 @@ Sema::FinalizeDeclaration(Decl *ThisDecl if (unsigned MaxAlign = Context.getTargetInfo().getMaxTLSAlign()) { // Protect the check so that it's not performed on dependent types and // dependent alignments (we can't determine the alignment in that case). - if (VD->getTLSKind() && !hasDependentAlignment(VD)) { + if (VD->getTLSKind() && !hasDependentAlignment(VD) && + !VD->isInvalidDecl()) { CharUnits MaxAlignChars = Context.toCharUnitsFromBits(MaxAlign); if (Context.getDeclAlign(VD) > MaxAlignChars) { Diag(VD->getLocation(), diag::err_tls_var_aligned_over_maximum) Modified: cfe/trunk/test/SemaCXX/auto-cxx0x.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/auto-cxx0x.cpp?rev=293333&r1=293332&r2=293333&view=diff ============================================================================== --- cfe/trunk/test/SemaCXX/auto-cxx0x.cpp (original) +++ cfe/trunk/test/SemaCXX/auto-cxx0x.cpp Fri Jan 27 15:28:37 2017 @@ -6,3 +6,5 @@ void f() { } typedef auto PR25449(); // expected-error {{'auto' not allowed in typedef}} + +thread_local auto x; // expected-error {{requires an initializer}} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits