From 77212133072dc40f070a280af8217032f55a9eb4 Mon Sep 17 00:00:00 2001
From: rdivacky <rdivacky@FreeBSD.org>
Date: Tue, 15 Dec 2009 18:49:47 +0000
Subject: Update clang to 91430.

---
 tools/index-test/index-test.cpp | 46 +++++++++++++++++++----------------------
 1 file changed, 21 insertions(+), 25 deletions(-)

(limited to 'tools/index-test/index-test.cpp')

diff --git a/tools/index-test/index-test.cpp b/tools/index-test/index-test.cpp
index dd7cbb2..ff9fd54 100644
--- a/tools/index-test/index-test.cpp
+++ b/tools/index-test/index-test.cpp
@@ -208,20 +208,26 @@ 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());
-
-  void *MainAddr = (void*) (intptr_t) CreateCompilerInvocation;
-  CompilerInvocation::CreateFromArgs(CI, Args.data(), Args.data() + Args.size(),
-                                     argv0, MainAddr, Diags);
+  for (unsigned i = 0, e = CompilerArgs.size(); i != e; ++i)
+    Args.push_back(CompilerArgs[i].c_str());
+
+  void *MainAddr = (void*) (intptr_t) CreateFromSource;
+  std::string ResourceDir =
+    CompilerInvocation::GetResourcesPath(Argv0, MainAddr);
+  return ASTUnit::LoadFromCommandLine(Args.data(), Args.data() + Args.size(),
+                                      Diags, ResourceDir);
 }
 
 int main(int argc, char **argv) {
@@ -234,9 +240,9 @@ int main(int argc, char **argv) {
   Indexer Idxer(Prog);
   llvm::SmallVector<TUnit*, 4> TUnits;
 
-  TextDiagnosticPrinter DiagClient(llvm::errs(), DiagnosticOptions(), false);
+  DiagnosticOptions DiagOpts;
   llvm::OwningPtr<Diagnostic> Diags(
-    CompilerInstance::createDiagnostics(DiagnosticOptions(), argc, argv));
+    CompilerInstance::createDiagnostics(DiagOpts, argc, argv));
 
   // If no input was specified, read from stdin.
   if (InputFilenames.empty())
@@ -244,23 +250,13 @@ int main(int argc, char **argv) {
 
   for (unsigned i = 0, e = InputFilenames.size(); i != e; ++i) {
     const std::string &InFile = InputFilenames[i];
-
-    std::string ErrMsg;
     llvm::OwningPtr<ASTUnit> AST;
-
-    if (ASTFromSource) {
-      CompilerInvocation CI;
-      CreateCompilerInvocation(InFile, CI, *Diags, argv[0]);
-      AST.reset(ASTUnit::LoadFromCompilerInvocation(CI, *Diags));
-      if (!AST)
-        ErrMsg = "unable to create AST";
-    } else
-      AST.reset(ASTUnit::LoadFromPCHFile(InFile, &ErrMsg));
-
-    if (!AST) {
-      llvm::errs() << "[" << InFile << "] Error: " << ErrMsg << '\n';
+    if (ASTFromSource)
+      AST.reset(CreateFromSource(InFile, *Diags, argv[0]));
+    else
+      AST.reset(ASTUnit::LoadFromPCHFile(InFile, *Diags));
+    if (!AST)
       return 1;
-    }
 
     TUnit *TU = new TUnit(AST.take(), InFile);
     TUnits.push_back(TU);
-- 
cgit v1.1