diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-03-28 23:32:39 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-03-28 23:32:39 +0000 |
| commit | fdf496cb4807647276ad43f9c4ae5aa30bad299c (patch) | |
| tree | 3626d6b6d132c5c4c0329a9e10ecbc6618968629 /clang | |
| parent | 9afbb8c2b1d00036cb86de54c6354f9388160ba2 (diff) | |
| download | bcm5719-llvm-fdf496cb4807647276ad43f9c4ae5aa30bad299c.tar.gz bcm5719-llvm-fdf496cb4807647276ad43f9c4ae5aa30bad299c.zip | |
PR19278: Align ASTTemplateArgumentListInfo to match its following dynamic array
of TemplateArgumentLocs. 'uint64_t' has higher alignment requirements than a
pointer on some platforms.
llvm-svn: 205068
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/AST/TemplateBase.h | 3 | ||||
| -rw-r--r-- | clang/lib/AST/TemplateBase.cpp | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/clang/include/clang/AST/TemplateBase.h b/clang/include/clang/AST/TemplateBase.h index 7810c306dd9..abe106cb4e1 100644 --- a/clang/include/clang/AST/TemplateBase.h +++ b/clang/include/clang/AST/TemplateBase.h @@ -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 diff --git a/clang/lib/AST/TemplateBase.cpp b/clang/lib/AST/TemplateBase.cpp index 16efb790b68..b068ffafef5 100644 --- a/clang/lib/AST/TemplateBase.cpp +++ b/clang/lib/AST/TemplateBase.cpp @@ -511,6 +511,8 @@ const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB, 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(); |

