mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-20 00:20:11 +00:00
[ExecutionEngine] Allow JIT clients to enable/disable module verification.
Previously module verification was always enabled, with no way to turn it off. As of this commit, module verification is on by default in Debug builds, and off by default in release builds. The default behaviour can be overridden by calling setVerifyModules(bool) on the JIT instance (this works for both the old JIT, and MCJIT). <rdar://problem/16150008> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206561 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -66,6 +66,15 @@ ExecutionEngine::ExecutionEngine(Module *M)
|
||||
CompilingLazily = false;
|
||||
GVCompilationDisabled = false;
|
||||
SymbolSearchingDisabled = false;
|
||||
|
||||
// IR module verification is enabled by default in debug builds, and disabled
|
||||
// by default in release builds.
|
||||
#ifndef NDEBUG
|
||||
VerifyModules = true;
|
||||
#else
|
||||
VerifyModules = false;
|
||||
#endif
|
||||
|
||||
Modules.push_back(M);
|
||||
assert(M && "Module is null?");
|
||||
}
|
||||
@@ -483,16 +492,17 @@ ExecutionEngine *EngineBuilder::create(TargetMachine *TM) {
|
||||
<< " a different -march switch.\n";
|
||||
}
|
||||
|
||||
if (UseMCJIT && ExecutionEngine::MCJITCtor) {
|
||||
ExecutionEngine *EE =
|
||||
ExecutionEngine::MCJITCtor(M, ErrorStr, MCJMM ? MCJMM : JMM,
|
||||
AllocateGVsWithCode, TheTM.release());
|
||||
if (EE) return EE;
|
||||
} else if (ExecutionEngine::JITCtor) {
|
||||
ExecutionEngine *EE =
|
||||
ExecutionEngine::JITCtor(M, ErrorStr, JMM,
|
||||
AllocateGVsWithCode, TheTM.release());
|
||||
if (EE) return EE;
|
||||
ExecutionEngine *EE = nullptr;
|
||||
if (UseMCJIT && ExecutionEngine::MCJITCtor)
|
||||
EE = ExecutionEngine::MCJITCtor(M, ErrorStr, MCJMM ? MCJMM : JMM,
|
||||
AllocateGVsWithCode, TheTM.release());
|
||||
else if (ExecutionEngine::JITCtor)
|
||||
EE = ExecutionEngine::JITCtor(M, ErrorStr, JMM,
|
||||
AllocateGVsWithCode, TheTM.release());
|
||||
|
||||
if (EE) {
|
||||
EE->setVerifyModules(VerifyModules);
|
||||
return EE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user