r293333 - PR31783: Don't request the alignment of an invalid declaration.
Richard Smith via cfe-commits
cfe-commits at lists.llvm.org
Fri Jan 27 13:28:38 PST 2017
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}}
More information about the cfe-commits
mailing list