diff options
Diffstat (limited to 'lib/AST/ASTContext.cpp')
-rw-r--r-- | lib/AST/ASTContext.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 7d3c119d57..159110a080 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -34,16 +34,17 @@ enum FloatingRank { ASTContext::ASTContext(const LangOptions& LOpts, SourceManager &SM, TargetInfo &t, IdentifierTable &idents, SelectorTable &sels, - bool FreeMem, unsigned size_reserve) : + bool FreeMem, unsigned size_reserve, + bool InitializeBuiltins) : GlobalNestedNameSpecifier(0), CFConstantStringTypeDecl(0), ObjCFastEnumerationStateTypeDecl(0), SourceMgr(SM), LangOpts(LOpts), FreeMemory(FreeMem), Target(t), Idents(idents), Selectors(sels), ExternalSource(0) { if (size_reserve > 0) Types.reserve(size_reserve); InitBuiltinTypes(); - BuiltinInfo.InitializeTargetBuiltins(Target); - BuiltinInfo.InitializeBuiltins(idents, LangOpts.NoBuiltin); TUDecl = TranslationUnitDecl::Create(*this); + if (InitializeBuiltins) + this->InitializeBuiltins(idents); } ASTContext::~ASTContext() { @@ -94,6 +95,11 @@ ASTContext::~ASTContext() { TUDecl->Destroy(*this); } +void ASTContext::InitializeBuiltins(IdentifierTable &idents) { + BuiltinInfo.InitializeTargetBuiltins(Target); + BuiltinInfo.InitializeBuiltins(idents, LangOpts.NoBuiltin); +} + void ASTContext::setExternalSource(llvm::OwningPtr<ExternalASTSource> &Source) { ExternalSource.reset(Source.take()); |