The second part of the change from -fast to -O#. This changes the JIT to accept
authorBill Wendling <isanbard@gmail.com>
Wed, 29 Apr 2009 00:32:19 +0000 (00:32 +0000)
committerBill Wendling <isanbard@gmail.com>
Wed, 29 Apr 2009 00:32:19 +0000 (00:32 +0000)
an optimization level instead of a simple boolean telling it to generate code
"fast" or the other type of "fast".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70347 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm-c/ExecutionEngine.h
include/llvm/ExecutionEngine/ExecutionEngine.h
lib/ExecutionEngine/ExecutionEngine.cpp
lib/ExecutionEngine/ExecutionEngineBindings.cpp
lib/ExecutionEngine/Interpreter/Interpreter.cpp
lib/ExecutionEngine/Interpreter/Interpreter.h
lib/ExecutionEngine/JIT/JIT.cpp
lib/ExecutionEngine/JIT/JIT.h
lib/ExecutionEngine/JIT/TargetSelect.cpp

index 8390c682dce66c596c586592782eb4d9ef5d5529..a31dc8246a3aff8adbd0e8d6ae89f982be0a2083 100644 (file)
@@ -62,7 +62,7 @@ int LLVMCreateInterpreter(LLVMExecutionEngineRef *OutInterp,
 
 int LLVMCreateJITCompiler(LLVMExecutionEngineRef *OutJIT,
                           LLVMModuleProviderRef MP,
-                          int Fast,
+                          unsigned OptLevel,
                           char **OutError);
 
 void LLVMDisposeExecutionEngine(LLVMExecutionEngineRef EE);
index 39ed071dba18b4de54baf00500a42aba09732e3f..014473adaeb95bbec168307f4bf854b8f9a822cf 100644 (file)
@@ -84,7 +84,7 @@ protected:
   // libraries, the JIT and Interpreter set these functions to ctor pointers
   // at startup time if they are linked in.
   typedef ExecutionEngine *(*EECtorFn)(ModuleProvider*, std::string*,
-                                       bool Fast);
+                                       unsigned OptLevel);
   static EECtorFn JITCtor, InterpCtor;
 
   /// LazyFunctionCreator - If an unknown function is needed, this function
@@ -114,7 +114,7 @@ public:
   static ExecutionEngine *create(ModuleProvider *MP,
                                  bool ForceInterpreter = false,
                                  std::string *ErrorStr = 0,
-                                 bool Fast = false);
+                                 unsigned OptLevel = 3);
   
   /// create - This is the factory method for creating an execution engine which
   /// is appropriate for the current machine.  This takes ownership of the
@@ -127,7 +127,7 @@ public:
   static ExecutionEngine *createJIT(ModuleProvider *MP,
                                     std::string *ErrorStr = 0,
                                     JITMemoryManager *JMM = 0,
-                                    bool Fast = false);
+                                    unsigned OptLevel = 3);
   
   
   
index e74fc329ae096384bb314c599a9596d08721c819..e64af9118d9c40d517d4d6f0ab34483a7caed253 100644 (file)
@@ -383,7 +383,7 @@ int ExecutionEngine::runFunctionAsMain(Function *Fn,
 ExecutionEngine *ExecutionEngine::create(ModuleProvider *MP,
                                          bool ForceInterpreter,
                                          std::string *ErrorStr,
-                                         bool Fast) {
+                                         unsigned OptLevel) {
   ExecutionEngine *EE = 0;
 
   // Make sure we can resolve symbols in the program as well. The zero arg
@@ -393,11 +393,11 @@ ExecutionEngine *ExecutionEngine::create(ModuleProvider *MP,
 
   // Unless the interpreter was explicitly selected, try making a JIT.
   if (!ForceInterpreter && JITCtor)
-    EE = JITCtor(MP, ErrorStr, Fast);
+    EE = JITCtor(MP, ErrorStr, OptLevel);
 
   // If we can't make a JIT, make an interpreter instead.
   if (EE == 0 && InterpCtor)
-    EE = InterpCtor(MP, ErrorStr, Fast);
+    EE = InterpCtor(MP, ErrorStr, OptLevel);
 
   return EE;
 }
index 39bf60121e08bbbb6a83a804e1bd3d20d394e80c..57467c2b8125e5c04617a22edf3ca75a1720ef42 100644 (file)
@@ -114,11 +114,11 @@ int LLVMCreateInterpreter(LLVMExecutionEngineRef *OutInterp,
 
 int LLVMCreateJITCompiler(LLVMExecutionEngineRef *OutJIT,
                           LLVMModuleProviderRef MP,
-                          int Fast,
+                          unsigned OptLevel,
                           char **OutError) {
   std::string Error;
   if (ExecutionEngine *JIT = ExecutionEngine::createJIT(unwrap(MP), &Error, 0,
-                                                        Fast != 0)) {
+                                                        OptLevel)) {
     *OutJIT = wrap(JIT);
     return 0;
   }
index ac0ee3fb49ca4b09258de79f2e80ea92f1c460e1..c05eeac08681965b3ca59b93dd6dfc4697d9ed2f 100644 (file)
@@ -37,7 +37,7 @@ namespace llvm {
 /// create - Create a new interpreter object.  This can never fail.
 ///
 ExecutionEngine *Interpreter::create(ModuleProvider *MP, std::string* ErrStr,
-                                     bool Fast /*unused*/) {
+                                     unsigned OptLevel /*unused*/) {
   // Tell this ModuleProvide to materialize and release the module
   if (!MP->materializeModule(ErrStr))
     // We got an error, just return 0
index f9555b7b0948bb36d89b3d737f1e1c62554babc3..2e10e6b497317d3383e8c621034461721a3ded2e 100644 (file)
@@ -108,7 +108,7 @@ public:
   /// create - Create an interpreter ExecutionEngine. This can never fail.
   ///
   static ExecutionEngine *create(ModuleProvider *M, std::string *ErrorStr = 0,
-                                 bool Fast /*unused*/ = 0);
+                                 unsigned OptLevel /*unused*/ = 3);
 
   /// run - Start execution with the specified function and arguments.
   ///
index 986ec91ede0564d24c30424f1bd073dc6c6f0b5e..93203a257cc07e3a8582b07039baf5c0a303d6d1 100644 (file)
@@ -196,8 +196,8 @@ void DarwinRegisterFrame(void* FrameBegin) {
 ExecutionEngine *ExecutionEngine::createJIT(ModuleProvider *MP,
                                             std::string *ErrorStr,
                                             JITMemoryManager *JMM,
-                                            bool Fast) {
-  ExecutionEngine *EE = JIT::createJIT(MP, ErrorStr, JMM, Fast);
+                                            unsigned OptLevel) {
+  ExecutionEngine *EE = JIT::createJIT(MP, ErrorStr, JMM, OptLevel);
   if (!EE) return 0;
   
   // Make sure we can resolve symbols in the program as well. The zero arg
@@ -207,7 +207,7 @@ ExecutionEngine *ExecutionEngine::createJIT(ModuleProvider *MP,
 }
 
 JIT::JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji,
-         JITMemoryManager *JMM, bool Fast)
+         JITMemoryManager *JMM, unsigned OptLevel)
   : ExecutionEngine(MP), TM(tm), TJI(tji) {
   setTargetData(TM.getTargetData());
 
@@ -223,7 +223,7 @@ JIT::JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji,
 
   // Turn the machine code intermediate representation into bytes in memory that
   // may be executed.
-  if (TM.addPassesToEmitMachineCode(PM, *MCE, Fast)) {
+  if (TM.addPassesToEmitMachineCode(PM, *MCE, OptLevel)) {
     cerr << "Target does not support machine code emission!\n";
     abort();
   }
@@ -272,7 +272,7 @@ void JIT::addModuleProvider(ModuleProvider *MP) {
 
     // 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, 3 /* OptLevel */)) {
       cerr << "Target does not support machine code emission!\n";
       abort();
     }
@@ -305,7 +305,7 @@ Module *JIT::removeModuleProvider(ModuleProvider *MP, std::string *E) {
     
     // 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, 3 /* OptLevel */)) {
       cerr << "Target does not support machine code emission!\n";
       abort();
     }
@@ -337,7 +337,7 @@ void JIT::deleteModuleProvider(ModuleProvider *MP, std::string *E) {
     
     // 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, 3 /* OptLevel */)) {
       cerr << "Target does not support machine code emission!\n";
       abort();
     }
index e0c74f87389dfde08b67dcc92773669eadb8850a..b3ae82c58c5c260ef4bf7a6f3fb3a7cdf134d20b 100644 (file)
@@ -55,7 +55,7 @@ class JIT : public ExecutionEngine {
   JITState *jitstate;
 
   JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji, 
-      JITMemoryManager *JMM, bool Fast);
+      JITMemoryManager *JMM, unsigned OptLevel);
 public:
   ~JIT();
 
@@ -71,8 +71,8 @@ public:
   /// for the current target.  Otherwise, return null.
   ///
   static ExecutionEngine *create(ModuleProvider *MP, std::string *Err,
-                                 bool Fast = false) {
-    return createJIT(MP, Err, 0, Fast);
+                                 unsigned OptLevel = 3) {
+    return createJIT(MP, Err, 0, OptLevel);
   }
 
   virtual void addModuleProvider(ModuleProvider *MP);
@@ -148,7 +148,7 @@ public:
   MachineCodeEmitter *getCodeEmitter() const { return MCE; }
   
   static ExecutionEngine *createJIT(ModuleProvider *MP, std::string *Err,
-                                    JITMemoryManager *JMM, bool Fast);
+                                    JITMemoryManager *JMM, unsigned OptLevel);
   
 private:
   static MachineCodeEmitter *createEmitter(JIT &J, JITMemoryManager *JMM);
index 98819c19b83e6f843fc9ee14135eefe7265ccd55..7edd0837d502263e5c25234837b0233b0aedafce 100644 (file)
@@ -42,7 +42,7 @@ MAttrs("mattr",
 /// available for the current target.  Otherwise, return null.
 ///
 ExecutionEngine *JIT::createJIT(ModuleProvider *MP, std::string *ErrorStr,
-                                JITMemoryManager *JMM, bool Fast) {
+                                JITMemoryManager *JMM, unsigned OptLevel) {
   const TargetMachineRegistry::entry *TheArch = MArch;
   if (TheArch == 0) {
     std::string Error;
@@ -74,7 +74,7 @@ ExecutionEngine *JIT::createJIT(ModuleProvider *MP, std::string *ErrorStr,
 
   // If the target supports JIT code generation, return a new JIT now.
   if (TargetJITInfo *TJ = Target->getJITInfo())
-    return new JIT(MP, *Target, *TJ, JMM, Fast);
+    return new JIT(MP, *Target, *TJ, JMM, OptLevel);
 
   if (ErrorStr)
     *ErrorStr = "target does not support JIT code generation";