diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-04-05 23:52:57 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-04-05 23:52:57 +0000 |
commit | 28019772db70d4547be05a042eb950bc910f134f (patch) | |
tree | 45835536240a6d2138eeabd8036ad956ce091b95 /lib/Frontend/ASTUnit.cpp | |
parent | e9686572f17968048a5e097254f85c202ea44aec (diff) |
Make Diagnostic reference-counted, which is simpler than juggling
maybe-ownership vs. ownership.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100498 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/ASTUnit.cpp')
-rw-r--r-- | lib/Frontend/ASTUnit.cpp | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index 2a76d6f37b..427bd6a9b8 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/lib/Frontend/ASTUnit.cpp @@ -141,24 +141,22 @@ const std::string &ASTUnit::getPCHFileName() { } ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename, - llvm::MaybeOwningPtr<Diagnostic> Diags, + llvm::IntrusiveRefCntPtr<Diagnostic> Diags, bool OnlyLocalDecls, RemappedFile *RemappedFiles, unsigned NumRemappedFiles, bool CaptureDiagnostics) { llvm::OwningPtr<ASTUnit> AST(new ASTUnit(true)); - if (Diags.get()) - AST->Diagnostics = Diags; - else { + if (!Diags.getPtr()) { // No diagnostics engine was provided, so create our own diagnostics object // with the default options. DiagnosticOptions DiagOpts; - AST->Diagnostics.reset(CompilerInstance::createDiagnostics(DiagOpts, 0, 0), - true); + Diags = CompilerInstance::createDiagnostics(DiagOpts, 0, 0); } AST->OnlyLocalDecls = OnlyLocalDecls; + AST->Diagnostics = Diags; AST->FileMgr.reset(new FileManager); AST->SourceMgr.reset(new SourceManager(AST->getDiagnostics())); AST->HeaderInfo.reset(new HeaderSearch(AST->getFileManager())); @@ -290,7 +288,7 @@ public: } ASTUnit *ASTUnit::LoadFromCompilerInvocation(CompilerInvocation *CI, - llvm::MaybeOwningPtr<Diagnostic> Diags, + llvm::IntrusiveRefCntPtr<Diagnostic> Diags, bool OnlyLocalDecls, bool CaptureDiagnostics) { // Create the compiler instance to use for building the AST. @@ -298,16 +296,16 @@ ASTUnit *ASTUnit::LoadFromCompilerInvocation(CompilerInvocation *CI, llvm::OwningPtr<ASTUnit> AST; llvm::OwningPtr<TopLevelDeclTrackerAction> Act; - if (!Diags.get()) { + if (!Diags.getPtr()) { // No diagnostics engine was provided, so create our own diagnostics object // with the default options. DiagnosticOptions DiagOpts; - Diags.reset(CompilerInstance::createDiagnostics(DiagOpts, 0, 0), true); + Diags = CompilerInstance::createDiagnostics(DiagOpts, 0, 0); } Clang.setInvocation(CI); - Clang.setDiagnostics(Diags.get()); + Clang.setDiagnostics(Diags.getPtr()); Clang.setDiagnosticClient(Diags->getClient()); // Create the target instance. @@ -315,7 +313,6 @@ ASTUnit *ASTUnit::LoadFromCompilerInvocation(CompilerInvocation *CI, Clang.getTargetOpts())); if (!Clang.hasTarget()) { Clang.takeDiagnosticClient(); - Clang.takeDiagnostics(); return 0; } @@ -370,7 +367,6 @@ ASTUnit *ASTUnit::LoadFromCompilerInvocation(CompilerInvocation *CI, Act->EndSourceFile(); Clang.takeDiagnosticClient(); - Clang.takeDiagnostics(); Clang.takeInvocation(); AST->Invocation.reset(Clang.takeInvocation()); @@ -380,23 +376,22 @@ error: Clang.takeSourceManager(); Clang.takeFileManager(); Clang.takeDiagnosticClient(); - Clang.takeDiagnostics(); return 0; } ASTUnit *ASTUnit::LoadFromCommandLine(const char **ArgBegin, const char **ArgEnd, - llvm::MaybeOwningPtr<Diagnostic> Diags, + llvm::IntrusiveRefCntPtr<Diagnostic> Diags, llvm::StringRef ResourceFilesPath, bool OnlyLocalDecls, RemappedFile *RemappedFiles, unsigned NumRemappedFiles, bool CaptureDiagnostics) { - if (!Diags.get()) { + if (!Diags.getPtr()) { // No diagnostics engine was provided, so create our own diagnostics object // with the default options. DiagnosticOptions DiagOpts; - Diags.reset(CompilerInstance::createDiagnostics(DiagOpts, 0, 0), true); + Diags = CompilerInstance::createDiagnostics(DiagOpts, 0, 0); } llvm::SmallVector<const char *, 16> Args; |