@@ -274,7 +274,11 @@ void JITModule::compile_module(std::unique_ptr<llvm::Module> m, const string &fu
274
274
275
275
// Make the execution engine
276
276
debug (2 ) << " Creating new execution engine\n " ;
277
+ #if LLVM_VERSION >= 210
278
+ debug (2 ) << " Target triple: " << m->getTargetTriple ().str () << " \n " ;
279
+ #else
277
280
debug (2 ) << " Target triple: " << m->getTargetTriple () << " \n " ;
281
+ #endif
278
282
string error_string;
279
283
280
284
llvm::for_each (*m, set_function_attributes_from_halide_target_options);
@@ -313,18 +317,32 @@ void JITModule::compile_module(std::unique_ptr<llvm::Module> m, const string &fu
313
317
llvm::orc::LLJITBuilderState::ObjectLinkingLayerCreator linkerBuilder;
314
318
if ((target.arch == Target::Arch::X86 && target.bits == 32 ) ||
315
319
(target.arch == Target::Arch::ARM && target.bits == 32 )) {
316
- // Fallback to RTDyld-based linking to workaround errors:
317
- // i386: "JIT session error: Unsupported i386 relocation:4" (R_386_PLT32)
318
- // ARM 32bit: Unsupported target machine architecture in ELF object shared runtime-jitted-objectbuffer
320
+ // Fallback to RTDyld-based linking to workaround errors:
321
+ // i386: "JIT session error: Unsupported i386 relocation:4" (R_386_PLT32)
322
+ // ARM 32bit: Unsupported target machine architecture in ELF object shared runtime-jitted-objectbuffer
323
+ #if LLVM_VERSION >= 210
324
+ linkerBuilder = [&](llvm::orc::ExecutionSession &session) {
325
+ return std::make_unique<llvm::orc::RTDyldObjectLinkingLayer>(session, [&]() {
326
+ return std::make_unique<HalideJITMemoryManager>(dependencies);
327
+ });
328
+ };
329
+ #else
319
330
linkerBuilder = [&](llvm::orc::ExecutionSession &session, const llvm::Triple &) {
320
331
return std::make_unique<llvm::orc::RTDyldObjectLinkingLayer>(session, [&]() {
321
332
return std::make_unique<HalideJITMemoryManager>(dependencies);
322
333
});
323
334
};
335
+ #endif
324
336
} else {
337
+ #if LLVM_VERSION >= 210
338
+ linkerBuilder = [](llvm::orc::ExecutionSession &session) {
339
+ return std::make_unique<llvm::orc::ObjectLinkingLayer>(session);
340
+ };
341
+ #else
325
342
linkerBuilder = [](llvm::orc::ExecutionSession &session, const llvm::Triple &) {
326
343
return std::make_unique<llvm::orc::ObjectLinkingLayer>(session);
327
344
};
345
+ #endif
328
346
}
329
347
330
348
auto JIT = llvm::cantFail (llvm::orc::LLJITBuilder ()
0 commit comments