Generalize bugpoint's concept of a "safe" backend, and add options
to allow the "safe" backend to be run with a different path, and/or
with different command-line options.

This enables the following use cases:
 - bugpoint llc against an llc command from a different build
 - bugpoint llc against the same llc with different command-line options
 - and more...

Also, document the existing "custom" interpreter options.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60681 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/bugpoint/BugDriver.h b/tools/bugpoint/BugDriver.h
index 2750575..6a21053 100644
--- a/tools/bugpoint/BugDriver.h
+++ b/tools/bugpoint/BugDriver.h
@@ -45,7 +45,7 @@
   Module *Program;             // The raw program, linked together
   std::vector<const PassInfo*> PassesToRun;
   AbstractInterpreter *Interpreter;   // How to run the program
-  AbstractInterpreter *cbe;
+  AbstractInterpreter *SafeInterpreter;  // To generate reference output, etc.
   GCC *gcc;
   bool run_as_child;
   bool run_find_bugs;
@@ -140,9 +140,9 @@
     return OldProgram;
   }
 
-  AbstractInterpreter *switchToCBE() {
+  AbstractInterpreter *switchToSafeInterpreter() {
     AbstractInterpreter *Old = Interpreter;
-    Interpreter = (AbstractInterpreter*)cbe;
+    Interpreter = (AbstractInterpreter*)SafeInterpreter;
     return Old;
   }
 
@@ -172,11 +172,11 @@
                              AbstractInterpreter *AI = 0,
                              bool *ProgramExitedNonzero = 0);
 
-  /// executeProgramWithCBE - Used to create reference output with the C
+  /// executeProgramSafely - Used to create reference output with the "safe"
   /// backend, if reference output is not provided.  If there is a problem with
   /// the code generator (e.g., llc crashes), this will throw an exception.
   ///
-  std::string executeProgramWithCBE(std::string OutputFile = "");
+  std::string executeProgramSafely(std::string OutputFile = "");
 
   /// createReferenceFile - calls compileProgram and then records the output
   /// into ReferenceOutputFile. Returns true if reference file created, false