Temporarily revert r135614 while I fix the cmake build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135621 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Driver/ArgList.cpp b/lib/Driver/ArgList.cpp
index 30225fc..b8af9cc 100644
--- a/lib/Driver/ArgList.cpp
+++ b/lib/Driver/ArgList.cpp
@@ -46,16 +46,6 @@
   Args.push_back(A);
 }
 
-void ArgList::eraseArg(OptSpecifier Id) {
-  for (iterator it = begin(), ie = end(); it != ie; ++it) {
-    if ((*it)->getOption().matches(Id)) {
-      Args.erase(it);
-      it = begin();
-      ie = end();
-    }
-  }
-}
-
 Arg *ArgList::getLastArgNoClaim(OptSpecifier Id) const {
   // FIXME: Make search efficient?
   for (const_reverse_iterator it = rbegin(), ie = rend(); it != ie; ++it)
@@ -202,12 +192,6 @@
     (*it)->claim();
 }
 
-void ArgList::ClaimAllArgs() const {
-  for (const_iterator it = begin(), ie = end(); it != ie; ++it)
-    if (!(*it)->isClaimed())
-      (*it)->claim();
-}
-
 const char *ArgList::MakeArgString(const llvm::Twine &T) const {
   llvm::SmallString<256> Str;
   T.toVector(Str);
diff --git a/lib/Driver/Compilation.cpp b/lib/Driver/Compilation.cpp
index b0e46ff..2657faa 100644
--- a/lib/Driver/Compilation.cpp
+++ b/lib/Driver/Compilation.cpp
@@ -25,7 +25,7 @@
 Compilation::Compilation(const Driver &D, const ToolChain &_DefaultToolChain,
                          InputArgList *_Args, DerivedArgList *_TranslatedArgs)
   : TheDriver(D), DefaultToolChain(_DefaultToolChain), Args(_Args),
-    TranslatedArgs(_TranslatedArgs), Redirects(0) {
+    TranslatedArgs(_TranslatedArgs) {
 }
 
 Compilation::~Compilation() {
@@ -43,13 +43,6 @@
   for (ActionList::iterator it = Actions.begin(), ie = Actions.end();
        it != ie; ++it)
     delete *it;
-
-  // Free redirections of stdout/stderr.
-  if (Redirects) {
-    delete Redirects[1];
-    delete Redirects[2];
-    delete Redirects;
-  }
 }
 
 const DerivedArgList &Compilation::getArgsForToolChain(const ToolChain *TC,
@@ -142,8 +135,8 @@
   std::copy(C.getArguments().begin(), C.getArguments().end(), Argv+1);
   Argv[C.getArguments().size() + 1] = 0;
 
-  if ((getDriver().CCCEcho || getDriver().CCPrintOptions ||
-       getArgs().hasArg(options::OPT_v)) && !getDriver().CCGenDiagnostics) {
+  if (getDriver().CCCEcho || getDriver().CCPrintOptions ||
+      getArgs().hasArg(options::OPT_v)) {
     llvm::raw_ostream *OS = &llvm::errs();
 
     // Follow gcc implementation of CC_PRINT_OPTIONS; we could also cache the
@@ -174,7 +167,7 @@
   std::string Error;
   int Res =
     llvm::sys::Program::ExecuteAndWait(Prog, Argv,
-                                       /*env*/0, Redirects,
+                                       /*env*/0, /*redirects*/0,
                                        /*secondsToWait*/0, /*memoryLimit*/0,
                                        &Error);
   if (!Error.empty()) {
@@ -202,27 +195,3 @@
     return 0;
   }
 }
-
-void Compilation::initCompilationForDiagnostics(void) {
-  // Free actions and jobs, if built.
-  for (ActionList::iterator it = Actions.begin(), ie = Actions.end();
-       it != ie; ++it)
-    delete *it;
-  Actions.clear();
-  Jobs.clear();
-
-  // Clear temporary and results file lists.
-  TempFiles.clear();
-  ResultFiles.clear();
-
-  // Remove any user specified output.  Claim any unclaimed arguments, so as
-  // to avoid emitting warnings about unused args.
-  if (TranslatedArgs->hasArg(options::OPT_o))
-    TranslatedArgs->eraseArg(options::OPT_o);
-  TranslatedArgs->ClaimAllArgs();
-
-  // Redirect stdout/stderr to /dev/null.
-  Redirects = new const llvm::sys::Path*[3]();
-  Redirects[1] = new const llvm::sys::Path();
-  Redirects[2] = new const llvm::sys::Path();
-}
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index b01e8fc..789f6f7 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -60,9 +60,9 @@
     CCLogDiagnosticsFilename(0), CCCIsCXX(false),
     CCCIsCPP(false),CCCEcho(false), CCCPrintBindings(false),
     CCPrintOptions(false), CCPrintHeaders(false), CCLogDiagnostics(false),
-    CCGenDiagnostics(false), CCCGenericGCCName(""), CheckInputsExist(true),
-    CCCUseClang(true), CCCUseClangCXX(true), CCCUseClangCPP(true),
-    CCCUsePCH(true), SuppressMissingInputWarning(false) {
+    CCCGenericGCCName(""), CheckInputsExist(true), CCCUseClang(true),
+    CCCUseClangCXX(true), CCCUseClangCPP(true), CCCUsePCH(true),
+    SuppressMissingInputWarning(false) {
   if (IsProduction) {
     // In a "production" build, only use clang on architectures we expect to
     // work, and don't use clang C++.
@@ -313,63 +313,7 @@
   return C;
 }
 
-// When clang crashes, produce diagnostic information including the fully 
-// preprocessed source file(s).  Request that the developer attach the 
-// diagnostic information to a bug report.
-void Driver::generateCompilationDiagnostics(Compilation &C,
-                                            const Command *FailingCommand) {
-  Diag(clang::diag::note_drv_command_failed_diag_msg)
-    << "Please submit a bug report to " BUG_REPORT_URL " and include command"
-    " line arguments and all diagnostic information.";
-
-  // Suppress driver output and emit preprocessor output to temp file.
-  CCCIsCPP = true;
-  CCGenDiagnostics = true;
-
-  // Clear stale state and suppress tool output.
-  C.initCompilationForDiagnostics();
-
-  // Construct the list of abstract actions to perform for this compilation.
-  Diags.Reset();
-  if (Host->useDriverDriver())
-    BuildUniversalActions(C.getDefaultToolChain(), C.getArgs(),
-                          C.getActions());
-  else
-    BuildActions(C.getDefaultToolChain(), C.getArgs(), C.getActions());
-
-  BuildJobs(C);
-
-  // If there were errors building the compilation, quit now.
-  if (Diags.hasErrorOccurred()) {
-    Diag(clang::diag::note_drv_command_failed_diag_msg)
-      << "Error generating preprocessed source(s).";
-    return;
-  }
-
-  // Generate preprocessed output.
-  FailingCommand = 0;
-  int Res = C.ExecuteJob(C.getJobs(), FailingCommand);
-
-  // If the command succeeded, we are done.
-  if (Res == 0) {
-    Diag(clang::diag::note_drv_command_failed_diag_msg)
-      << "Preprocessed source(s) are located at:";
-    ArgStringList Files = C.getTempFiles();
-    for (ArgStringList::const_iterator it = Files.begin(), ie = Files.end(); 
-         it != ie; ++it)
-      Diag(clang::diag::note_drv_command_failed_diag_msg) << *it;
-  } else {
-    // Failure, remove preprocessed files.
-    if (!C.getArgs().hasArg(options::OPT_save_temps))
-      C.CleanupFileList(C.getTempFiles(), true);
-
-    Diag(clang::diag::note_drv_command_failed_diag_msg)
-      << "Error generating preprocessed source(s).";
-  }
-}
-
-int Driver::ExecuteCompilation(const Compilation &C,
-                               const Command *&FailingCommand) const {
+int Driver::ExecuteCompilation(const Compilation &C) const {
   // Just print if -### was present.
   if (C.getArgs().hasArg(options::OPT__HASH_HASH_HASH)) {
     C.PrintJob(llvm::errs(), C.getJobs(), "\n", true);
@@ -377,9 +321,10 @@
   }
 
   // If there were errors building the compilation, quit now.
-  if (Diags.hasErrorOccurred())
+  if (getDiags().hasErrorOccurred())
     return 1;
 
+  const Command *FailingCommand = 0;
   int Res = C.ExecuteJob(C.getJobs(), FailingCommand);
 
   // Remove temp files.
@@ -1253,7 +1198,7 @@
                        A->getType(), BaseInput);
   }
 
-  if (CCCPrintBindings && !CCGenDiagnostics) {
+  if (CCCPrintBindings) {
     llvm::errs() << "# \"" << T.getToolChain().getTripleString() << '"'
                  << " - \"" << T.getName() << "\", inputs: [";
     for (unsigned i = 0, e = InputInfos.size(); i != e; ++i) {
@@ -1280,12 +1225,11 @@
   }
 
   // Default to writing to stdout?
-  if (AtTopLevel && isa<PreprocessJobAction>(JA) && !CCGenDiagnostics)
+  if (AtTopLevel && isa<PreprocessJobAction>(JA))
     return "-";
 
   // Output to a temporary file?
-  if ((!AtTopLevel && !C.getArgs().hasArg(options::OPT_save_temps)) ||
-      CCGenDiagnostics) {
+  if (!AtTopLevel && !C.getArgs().hasArg(options::OPT_save_temps)) {
     std::string TmpName =
       GetTemporaryPath(types::getTypeTempSuffix(JA.getType()));
     return C.addTempFile(C.getArgs().MakeArgString(TmpName.c_str()));
diff --git a/lib/Driver/Job.cpp b/lib/Driver/Job.cpp
index 1cd0abd..51055e9 100644
--- a/lib/Driver/Job.cpp
+++ b/lib/Driver/Job.cpp
@@ -28,12 +28,6 @@
     delete *it;
 }
 
-void JobList::clear() {
-  for (iterator it = begin(), ie = end(); it != ie; ++it)
-    delete *it;
-  Jobs.clear();
-}
-
 void Job::addCommand(Command *C) {
   cast<JobList>(this)->addJob(C);
 }
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index c30e55e..c54ced2 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -1376,7 +1376,7 @@
 
   Args.AddAllArgs(CmdArgs, options::OPT_v);
   Args.AddLastArg(CmdArgs, options::OPT_H);
-  if (D.CCPrintHeaders && !D.CCGenDiagnostics) {
+  if (D.CCPrintHeaders) {
     CmdArgs.push_back("-header-include-file");
     CmdArgs.push_back(D.CCPrintHeadersFilename ?
                       D.CCPrintHeadersFilename : "-");
@@ -1384,7 +1384,7 @@
   Args.AddLastArg(CmdArgs, options::OPT_P);
   Args.AddLastArg(CmdArgs, options::OPT_print_ivar_layout);
 
-  if (D.CCLogDiagnostics && !D.CCGenDiagnostics) {
+  if (D.CCLogDiagnostics) {
     CmdArgs.push_back("-diagnostic-log-file");
     CmdArgs.push_back(D.CCLogDiagnosticsFilename ?
                       D.CCLogDiagnosticsFilename : "-");