r312506 - Always allocate room for a ModuleDecl on the TranslationUnitDecl.
Richard Smith via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 4 17:50:20 PDT 2017
Author: rsmith
Date: Mon Sep 4 17:50:19 2017
New Revision: 312506
URL: http://llvm.org/viewvc/llvm-project?rev=312506&view=rev
Log:
Always allocate room for a ModuleDecl on the TranslationUnitDecl.
Sometimes we create the ASTContext and thus the TranslationUnitDecl before we know the LangOptions. This should fix the asan buildbot failures after r312467.
Modified:
cfe/trunk/lib/AST/DeclBase.cpp
Modified: cfe/trunk/lib/AST/DeclBase.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclBase.cpp?rev=312506&r1=312505&r2=312506&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclBase.cpp (original)
+++ cfe/trunk/lib/AST/DeclBase.cpp Mon Sep 4 17:50:19 2017
@@ -74,8 +74,9 @@ void *Decl::operator new(std::size_t Siz
DeclContext *Parent, std::size_t Extra) {
assert(!Parent || &Parent->getParentASTContext() == &Ctx);
// With local visibility enabled, we track the owning module even for local
- // declarations.
- if (Ctx.getLangOpts().trackLocalOwningModule()) {
+ // declarations. We create the TU decl early and may not yet know what the
+ // LangOpts are, so conservatively allocate the storage.
+ if (Ctx.getLangOpts().trackLocalOwningModule() || !Parent) {
// Ensure required alignment of the resulting object by adding extra
// padding at the start if required.
size_t ExtraAlign =
More information about the cfe-commits
mailing list