From: Daniel Dunbar Date: Thu, 3 Sep 2009 05:59:35 +0000 (+0000) Subject: Revert "Remove redundant local variable (use newly created instance data).", the X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cc318939daaa50fc07f7d431caec3c8679893e9c;p=clang Revert "Remove redundant local variable (use newly created instance data).", the previous commit this depends on is breaking x86_64-apple-darwin10 and Linux tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80895 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index 3fce817c0d..38452ed9d4 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/lib/Frontend/ASTUnit.cpp @@ -104,13 +104,15 @@ ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename, std::string Predefines; unsigned Counter; + llvm::OwningPtr Reader; llvm::OwningPtr Source; - AST->Reader.reset(new PCHReader(SourceMgr, FileMgr, Diags)); - AST->Reader->setListener(new PCHInfoCollector(LangInfo, HeaderInfo, - TargetTriple, Predefines, - Counter)); - switch (AST->Reader->ReadPCH(Filename)) { + 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)) { case PCHReader::Success: break; @@ -131,7 +133,7 @@ ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename, PP.setPredefines(Predefines); PP.setCounterValue(Counter); - AST->Reader->setPreprocessor(PP); + Reader->setPreprocessor(PP); // Create and initialize the ASTContext. @@ -145,12 +147,12 @@ ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename, /* size_reserve = */0)); ASTContext &Context = *AST->Ctx.get(); - AST->Reader->InitializeContext(Context); + 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(AST->Reader.get()); + Source.reset(Reader.take()); Context.setExternalSource(Source); return AST.take();