Add new parameter Fast to createJIT to enable the fast codegen path.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54523 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp
index d4f190b..af8fd8f 100644
--- a/lib/ExecutionEngine/JIT/JIT.cpp
+++ b/lib/ExecutionEngine/JIT/JIT.cpp
@@ -73,8 +73,9 @@
 /// of the module provider.
 ExecutionEngine *ExecutionEngine::createJIT(ModuleProvider *MP,
                                             std::string *ErrorStr,
-                                            JITMemoryManager *JMM) {
-  ExecutionEngine *EE = JIT::createJIT(MP, ErrorStr, JMM);
+                                            JITMemoryManager *JMM,
+                                            bool Fast) {
+  ExecutionEngine *EE = JIT::createJIT(MP, ErrorStr, JMM, Fast);
   if (!EE) return 0;
   
   // Register routine for informing unwinding runtime about new EH frames
@@ -89,7 +90,7 @@
 }
 
 JIT::JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji,
-         JITMemoryManager *JMM)
+         JITMemoryManager *JMM, bool Fast)
   : ExecutionEngine(MP), TM(tm), TJI(tji) {
   setTargetData(TM.getTargetData());
 
@@ -105,7 +106,7 @@
 
   // Turn the machine code intermediate representation into bytes in memory that
   // may be executed.
-  if (TM.addPassesToEmitMachineCode(PM, *MCE, false /*fast*/)) {
+  if (TM.addPassesToEmitMachineCode(PM, *MCE, Fast)) {
     cerr << "Target does not support machine code emission!\n";
     abort();
   }
diff --git a/lib/ExecutionEngine/JIT/JIT.h b/lib/ExecutionEngine/JIT/JIT.h
index 6e6b8c2..41fa9bd 100644
--- a/lib/ExecutionEngine/JIT/JIT.h
+++ b/lib/ExecutionEngine/JIT/JIT.h
@@ -56,7 +56,7 @@
   JITState *jitstate;
 
   JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji, 
-      JITMemoryManager *JMM);
+      JITMemoryManager *JMM, bool Fast);
 public:
   ~JIT();
 
@@ -71,8 +71,9 @@
   /// create - Create an return a new JIT compiler if there is one available
   /// for the current target.  Otherwise, return null.
   ///
-  static ExecutionEngine *create(ModuleProvider *MP, std::string *Err) {
-    return createJIT(MP, Err, 0);
+  static ExecutionEngine *create(ModuleProvider *MP, std::string *Err,
+                                 bool Fast = false) {
+    return createJIT(MP, Err, 0, Fast);
   }
 
   virtual void addModuleProvider(ModuleProvider *MP);
@@ -128,7 +129,7 @@
   MachineCodeEmitter *getCodeEmitter() const { return MCE; }
   
   static ExecutionEngine *createJIT(ModuleProvider *MP, std::string *Err,
-                                    JITMemoryManager *JMM);
+                                    JITMemoryManager *JMM, bool Fast);
   
 private:
   static MachineCodeEmitter *createEmitter(JIT &J, JITMemoryManager *JMM);
diff --git a/lib/ExecutionEngine/JIT/TargetSelect.cpp b/lib/ExecutionEngine/JIT/TargetSelect.cpp
index 0654f34..5402085 100644
--- a/lib/ExecutionEngine/JIT/TargetSelect.cpp
+++ b/lib/ExecutionEngine/JIT/TargetSelect.cpp
@@ -41,7 +41,7 @@
 /// available for the current target.  Otherwise, return null.
 ///
 ExecutionEngine *JIT::createJIT(ModuleProvider *MP, std::string *ErrorStr,
-                                JITMemoryManager *JMM) {
+                                JITMemoryManager *JMM, bool Fast) {
   const TargetMachineRegistry::entry *TheArch = MArch;
   if (TheArch == 0) {
     std::string Error;
@@ -73,7 +73,7 @@
 
   // If the target supports JIT code generation, return a new JIT now.
   if (TargetJITInfo *TJ = Target->getJITInfo())
-    return new JIT(MP, *Target, *TJ, JMM);
+    return new JIT(MP, *Target, *TJ, JMM, Fast);
 
   if (ErrorStr)
     *ErrorStr = "target does not support JIT code generation";