The second part of the change from -fast to -O#. This changes the JIT to accept
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
diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp
index 986ec91..93203a2 100644
--- a/lib/ExecutionEngine/JIT/JIT.cpp
+++ b/lib/ExecutionEngine/JIT/JIT.cpp
@@ -196,8 +196,8 @@
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 @@
}
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 @@
// 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 @@
// 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 @@
// 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 @@
// 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();
}
diff --git a/lib/ExecutionEngine/JIT/JIT.h b/lib/ExecutionEngine/JIT/JIT.h
index e0c74f8..b3ae82c 100644
--- a/lib/ExecutionEngine/JIT/JIT.h
+++ b/lib/ExecutionEngine/JIT/JIT.h
@@ -55,7 +55,7 @@
JITState *jitstate;
JIT(ModuleProvider *MP, TargetMachine &tm, TargetJITInfo &tji,
- JITMemoryManager *JMM, bool Fast);
+ JITMemoryManager *JMM, unsigned OptLevel);
public:
~JIT();
@@ -71,8 +71,8 @@
/// 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 @@
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);
diff --git a/lib/ExecutionEngine/JIT/TargetSelect.cpp b/lib/ExecutionEngine/JIT/TargetSelect.cpp
index 98819c1..7edd083 100644
--- a/lib/ExecutionEngine/JIT/TargetSelect.cpp
+++ b/lib/ExecutionEngine/JIT/TargetSelect.cpp
@@ -42,7 +42,7 @@
/// 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 @@
// 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";