forked from OSchip/llvm-project
ASTUnit::LoadFromCompilerInvocation - Take ownership of the provided invocation.
llvm-svn: 96315
This commit is contained in:
parent
e922d9bdf0
commit
7f21a7f7ce
|
@ -143,15 +143,14 @@ public:
|
|||
/// CompilerInvocation object.
|
||||
///
|
||||
/// \param CI - The compiler invocation to use; it must have exactly one input
|
||||
/// source file. The caller is responsible for ensuring the lifetime of the
|
||||
/// invocation extends past that of the returned ASTUnit.
|
||||
/// source file. The ASTUnit takes ownership of the CompilerInvocation object.
|
||||
///
|
||||
/// \param Diags - The diagnostics engine to use for reporting errors; its
|
||||
/// lifetime is expected to extend past that of the returned ASTUnit.
|
||||
//
|
||||
// FIXME: Move OnlyLocalDecls, UseBumpAllocator to setters on the ASTUnit, we
|
||||
// shouldn't need to specify them at construction time.
|
||||
static ASTUnit *LoadFromCompilerInvocation(const CompilerInvocation &CI,
|
||||
static ASTUnit *LoadFromCompilerInvocation(CompilerInvocation *CI,
|
||||
Diagnostic &Diags,
|
||||
bool OnlyLocalDecls = false);
|
||||
|
||||
|
|
|
@ -230,7 +230,7 @@ public:
|
|||
|
||||
}
|
||||
|
||||
ASTUnit *ASTUnit::LoadFromCompilerInvocation(const CompilerInvocation &CI,
|
||||
ASTUnit *ASTUnit::LoadFromCompilerInvocation(CompilerInvocation *CI,
|
||||
Diagnostic &Diags,
|
||||
bool OnlyLocalDecls) {
|
||||
// Create the compiler instance to use for building the AST.
|
||||
|
@ -238,7 +238,7 @@ ASTUnit *ASTUnit::LoadFromCompilerInvocation(const CompilerInvocation &CI,
|
|||
llvm::OwningPtr<ASTUnit> AST;
|
||||
llvm::OwningPtr<TopLevelDeclTrackerAction> Act;
|
||||
|
||||
Clang.setInvocation(const_cast<CompilerInvocation*>(&CI));
|
||||
Clang.setInvocation(CI);
|
||||
|
||||
Clang.setDiagnostics(&Diags);
|
||||
Clang.setDiagnosticClient(Diags.getClient());
|
||||
|
@ -296,6 +296,7 @@ ASTUnit *ASTUnit::LoadFromCompilerInvocation(const CompilerInvocation &CI,
|
|||
Clang.takeDiagnostics();
|
||||
Clang.takeInvocation();
|
||||
|
||||
AST->Invocation.reset(Clang.takeInvocation());
|
||||
return AST.take();
|
||||
|
||||
error:
|
||||
|
@ -364,9 +365,5 @@ ASTUnit *ASTUnit::LoadFromCommandLine(const char **ArgBegin,
|
|||
CI->getHeaderSearchOpts().ResourceDir = ResourceFilesPath;
|
||||
|
||||
CI->getFrontendOpts().DisableFree = UseBumpAllocator;
|
||||
ASTUnit *Unit = LoadFromCompilerInvocation(*CI, Diags, OnlyLocalDecls);
|
||||
if (Unit)
|
||||
Unit->Invocation.reset(CI.take());
|
||||
|
||||
return Unit;
|
||||
return LoadFromCompilerInvocation(CI.take(), Diags, OnlyLocalDecls);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue