mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-07-08 18:30:04 +00:00
[lli] Make the OptLevel (-O=<char>) option accessible to the lazy JIT.
No test case - this only affects generated code performance. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239383 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b4863a99c9
commit
657c697363
@ -108,6 +108,9 @@ OrcLazyJIT::TransformFtor OrcLazyJIT::createDebugDumper() {
|
|||||||
llvm_unreachable("Unknown DumpKind");
|
llvm_unreachable("Unknown DumpKind");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Defined in lli.cpp.
|
||||||
|
CodeGenOpt::Level getOptLevel();
|
||||||
|
|
||||||
int llvm::runOrcLazyJIT(std::unique_ptr<Module> M, int ArgC, char* ArgV[]) {
|
int llvm::runOrcLazyJIT(std::unique_ptr<Module> M, int ArgC, char* ArgV[]) {
|
||||||
// Add the program's symbols into the JIT's search space.
|
// Add the program's symbols into the JIT's search space.
|
||||||
if (sys::DynamicLibrary::LoadLibraryPermanently(nullptr)) {
|
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
|
// Grab a target machine and try to build a factory function for the
|
||||||
// target-specific Orc callback manager.
|
// 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 &Context = getGlobalContext();
|
||||||
auto CallbackMgrBuilder =
|
auto CallbackMgrBuilder =
|
||||||
OrcLazyJIT::createCallbackManagerBuilder(Triple(TM->getTargetTriple()));
|
OrcLazyJIT::createCallbackManagerBuilder(Triple(TM->getTargetTriple()));
|
||||||
|
@ -365,6 +365,19 @@ static void addCygMingExtraModule(ExecutionEngine *EE,
|
|||||||
EE->addModule(std::move(M));
|
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
|
// main Driver function
|
||||||
@ -451,18 +464,7 @@ int main(int argc, char **argv, char * const *envp) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeGenOpt::Level OLvl = CodeGenOpt::Default;
|
builder.setOptLevel(getOptLevel());
|
||||||
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);
|
|
||||||
|
|
||||||
TargetOptions Options;
|
TargetOptions Options;
|
||||||
if (FloatABIForCalls != FloatABI::Default)
|
if (FloatABIForCalls != FloatABI::Default)
|
||||||
|
Loading…
Reference in New Issue
Block a user