aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/ASTUnit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Frontend/ASTUnit.cpp')
-rw-r--r--lib/Frontend/ASTUnit.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp
index 38452ed9d4..3fce817c0d 100644
--- a/lib/Frontend/ASTUnit.cpp
+++ b/lib/Frontend/ASTUnit.cpp
@@ -104,15 +104,13 @@ ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename,
std::string Predefines;
unsigned Counter;
- llvm::OwningPtr<PCHReader> Reader;
llvm::OwningPtr<ExternalASTSource> Source;
- Reader.reset(new PCHReader(SourceMgr, FileMgr, Diags));
- AST->Reader.reset(Reader.get());
- Reader->setListener(new PCHInfoCollector(LangInfo, HeaderInfo, TargetTriple,
- Predefines, Counter));
-
- switch (Reader->ReadPCH(Filename)) {
+ AST->Reader.reset(new PCHReader(SourceMgr, FileMgr, Diags));
+ AST->Reader->setListener(new PCHInfoCollector(LangInfo, HeaderInfo,
+ TargetTriple, Predefines,
+ Counter));
+ switch (AST->Reader->ReadPCH(Filename)) {
case PCHReader::Success:
break;
@@ -133,7 +131,7 @@ ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename,
PP.setPredefines(Predefines);
PP.setCounterValue(Counter);
- Reader->setPreprocessor(PP);
+ AST->Reader->setPreprocessor(PP);
// Create and initialize the ASTContext.
@@ -147,12 +145,12 @@ ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename,
/* size_reserve = */0));
ASTContext &Context = *AST->Ctx.get();
- Reader->InitializeContext(Context);
+ AST->Reader->InitializeContext(Context);
// Attach the PCH reader to the AST context as an external AST
// source, so that declarations will be deserialized from the
// PCH file as needed.
- Source.reset(Reader.take());
+ Source.reset(AST->Reader.get());
Context.setExternalSource(Source);
return AST.take();