r205068 - PR19278: Align ASTTemplateArgumentListInfo to match its following dynamic array
Richard Smith
richard-llvm at metafoo.co.uk
Fri Mar 28 16:32:40 PDT 2014
Author: rsmith
Date: Fri Mar 28 18:32:39 2014
New Revision: 205068
URL: http://llvm.org/viewvc/llvm-project?rev=205068&view=rev
Log:
PR19278: Align ASTTemplateArgumentListInfo to match its following dynamic array
of TemplateArgumentLocs. 'uint64_t' has higher alignment requirements than a
pointer on some platforms.
Modified:
cfe/trunk/include/clang/AST/TemplateBase.h
cfe/trunk/lib/AST/TemplateBase.cpp
Modified: cfe/trunk/include/clang/AST/TemplateBase.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/TemplateBase.h?rev=205068&r1=205067&r2=205068&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/TemplateBase.h (original)
+++ cfe/trunk/include/clang/AST/TemplateBase.h Fri Mar 28 18:32:39 2014
@@ -567,7 +567,8 @@ struct ASTTemplateArgumentListInfo {
/// Force ASTTemplateArgumentListInfo to the right alignment
/// for the following array of TemplateArgumentLocs.
- void *Aligner;
+ llvm::AlignedCharArray<
+ llvm::AlignOf<TemplateArgumentLoc>::Alignment, 1> Aligner;
};
/// \brief Retrieve the template arguments
Modified: cfe/trunk/lib/AST/TemplateBase.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/TemplateBase.cpp?rev=205068&r1=205067&r2=205068&view=diff
==============================================================================
--- cfe/trunk/lib/AST/TemplateBase.cpp (original)
+++ cfe/trunk/lib/AST/TemplateBase.cpp Fri Mar 28 18:32:39 2014
@@ -511,6 +511,8 @@ const DiagnosticBuilder &clang::operator
const ASTTemplateArgumentListInfo *
ASTTemplateArgumentListInfo::Create(ASTContext &C,
const TemplateArgumentListInfo &List) {
+ assert(llvm::alignOf<ASTTemplateArgumentListInfo>() >=
+ llvm::alignOf<TemplateArgumentLoc>());
std::size_t size = ASTTemplateArgumentListInfo::sizeFor(List.size());
void *Mem = C.Allocate(size, llvm::alignOf<ASTTemplateArgumentListInfo>());
ASTTemplateArgumentListInfo *TAI = new (Mem) ASTTemplateArgumentListInfo();
More information about the cfe-commits
mailing list