From: Richard Smith Date: Tue, 5 Sep 2017 00:50:19 +0000 (+0000) Subject: Always allocate room for a ModuleDecl on the TranslationUnitDecl. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=50f89d67d8772dc6e2e4abb524d8550aacbda89a;p=clang 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@312506 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/DeclBase.cpp b/lib/AST/DeclBase.cpp index cd2c83a02f..abe17b5a84 100644 --- a/lib/AST/DeclBase.cpp +++ b/lib/AST/DeclBase.cpp @@ -74,8 +74,9 @@ void *Decl::operator new(std::size_t Size, const ASTContext &Ctx, 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 =