diff options
Diffstat (limited to 'tools/index-test/index-test.cpp')
-rw-r--r-- | tools/index-test/index-test.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/tools/index-test/index-test.cpp b/tools/index-test/index-test.cpp index dd7cbb2164..fc8547b784 100644 --- a/tools/index-test/index-test.cpp +++ b/tools/index-test/index-test.cpp @@ -208,20 +208,24 @@ static void ProcessASTLocation(ASTLocation ASTLoc, Indexer &Idxer) { static llvm::cl::opt<bool> ASTFromSource("ast-from-source", - llvm::cl::desc("Treat the inputs as source files to parse.")); + llvm::cl::desc("Treat the inputs as source files to parse")); + +static llvm::cl::list<std::string> +CompilerArgs("arg", llvm::cl::desc("Extra arguments to use during parsing")); static llvm::cl::list<std::string> InputFilenames(llvm::cl::Positional, llvm::cl::desc("<input AST files>")); -void CreateCompilerInvocation(const std::string &Filename, - CompilerInvocation &CI, Diagnostic &Diags, - const char *argv0) { +ASTUnit *CreateFromSource(const std::string &Filename, Diagnostic &Diags, + const char *Argv0) { llvm::SmallVector<const char *, 16> Args; Args.push_back(Filename.c_str()); + for (unsigned i = 0, e = CompilerArgs.size(); i != e; ++i) + Args.push_back(CompilerArgs[i].c_str()); - void *MainAddr = (void*) (intptr_t) CreateCompilerInvocation; - CompilerInvocation::CreateFromArgs(CI, Args.data(), Args.data() + Args.size(), - argv0, MainAddr, Diags); + return ASTUnit::LoadFromCommandLine(Args.data(), Args.data() + Args.size(), + Diags, Argv0, + (void*) (intptr_t) CreateFromSource); } int main(int argc, char **argv) { @@ -249,10 +253,8 @@ int main(int argc, char **argv) { llvm::OwningPtr<ASTUnit> AST; if (ASTFromSource) { - CompilerInvocation CI; - CreateCompilerInvocation(InFile, CI, *Diags, argv[0]); - AST.reset(ASTUnit::LoadFromCompilerInvocation(CI, *Diags)); - if (!AST) + AST.reset(CreateFromSource(InFile, *Diags, argv[0])); + if (!AST || Diags->getNumErrors()) ErrMsg = "unable to create AST"; } else AST.reset(ASTUnit::LoadFromPCHFile(InFile, &ErrMsg)); |