forked from OSchip/llvm-project
[lli] Make the OptLevel (-O=<char>) option accessible to the lazy JIT.
No test case - this only affects generated code performance. llvm-svn: 239383
This commit is contained in:
parent
78324f2bce
commit
1899d0c3b1
|
@ -108,6 +108,9 @@ OrcLazyJIT::TransformFtor OrcLazyJIT::createDebugDumper() {
|
|||
llvm_unreachable("Unknown DumpKind");
|
||||
}
|
||||
|
||||
// Defined in lli.cpp.
|
||||
CodeGenOpt::Level getOptLevel();
|
||||
|
||||
int llvm::runOrcLazyJIT(std::unique_ptr<Module> M, int ArgC, char* ArgV[]) {
|
||||
// Add the program's symbols into the JIT's search space.
|
||||
if (sys::DynamicLibrary::LoadLibraryPermanently(nullptr)) {
|
||||
|
@ -117,7 +120,9 @@ int llvm::runOrcLazyJIT(std::unique_ptr<Module> M, int ArgC, char* ArgV[]) {
|
|||
|
||||
// Grab a target machine and try to build a factory function for the
|
||||
// target-specific Orc callback manager.
|
||||
auto TM = std::unique_ptr<TargetMachine>(EngineBuilder().selectTarget());
|
||||
EngineBuilder EB;
|
||||
EB.setOptLevel(getOptLevel());
|
||||
auto TM = std::unique_ptr<TargetMachine>(EB.selectTarget());
|
||||
auto &Context = getGlobalContext();
|
||||
auto CallbackMgrBuilder =
|
||||
OrcLazyJIT::createCallbackManagerBuilder(Triple(TM->getTargetTriple()));
|
||||
|
|
|
@ -365,6 +365,19 @@ static void addCygMingExtraModule(ExecutionEngine *EE,
|
|||
EE->addModule(std::move(M));
|
||||
}
|
||||
|
||||
CodeGenOpt::Level getOptLevel() {
|
||||
switch (OptLevel) {
|
||||
default:
|
||||
errs() << "lli: Invalid optimization level.\n";
|
||||
exit(1);
|
||||
case '0': return CodeGenOpt::None;
|
||||
case '1': return CodeGenOpt::Less;
|
||||
case ' ':
|
||||
case '2': return CodeGenOpt::Default;
|
||||
case '3': return CodeGenOpt::Aggressive;
|
||||
}
|
||||
llvm_unreachable("Unrecognized opt level.");
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// main Driver function
|
||||
|
@ -451,18 +464,7 @@ int main(int argc, char **argv, char * const *envp) {
|
|||
exit(1);
|
||||
}
|
||||
|
||||
CodeGenOpt::Level OLvl = CodeGenOpt::Default;
|
||||
switch (OptLevel) {
|
||||
default:
|
||||
errs() << argv[0] << ": invalid optimization level.\n";
|
||||
return 1;
|
||||
case ' ': break;
|
||||
case '0': OLvl = CodeGenOpt::None; break;
|
||||
case '1': OLvl = CodeGenOpt::Less; break;
|
||||
case '2': OLvl = CodeGenOpt::Default; break;
|
||||
case '3': OLvl = CodeGenOpt::Aggressive; break;
|
||||
}
|
||||
builder.setOptLevel(OLvl);
|
||||
builder.setOptLevel(getOptLevel());
|
||||
|
||||
TargetOptions Options;
|
||||
if (FloatABIForCalls != FloatABI::Default)
|
||||
|
|
Loading…
Reference in New Issue