From b81321d1ab9fb1dfd08110f84030c113d89b32fd Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Wed, 8 Jan 2020 12:07:43 -0500 Subject: [PATCH 1/4] [LLVM10] Memset requires MaybeAlign --- src/llvm-alloc-opt.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/llvm-alloc-opt.cpp b/src/llvm-alloc-opt.cpp index fd45665791389..0ebd8abc13744 100644 --- a/src/llvm-alloc-opt.cpp +++ b/src/llvm-alloc-opt.cpp @@ -1360,7 +1360,11 @@ void Optimizer::splitOnStack(CallInst *orig_inst) offset - slot.offset); auto sub_size = std::min(slot.offset + slot.size, offset + size) - std::max(offset, slot.offset); +#if JL_LLVM_VERSION >= 100000 + builder.CreateMemSet(ptr8, val_arg, sub_size, MaybeAlign(0)); +#else builder.CreateMemSet(ptr8, val_arg, sub_size, 0); +#endif } call->eraseFromParent(); return; From b7efa971e1bf667b5ebe86967a2013b397078d28 Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Wed, 8 Jan 2020 15:14:41 -0500 Subject: [PATCH 2/4] [LLVM10] use M->global_object().{begin|end}() --- src/jitlayers.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/jitlayers.cpp b/src/jitlayers.cpp index fa1ab7e9c44c4..dd8391202ba39 100644 --- a/src/jitlayers.cpp +++ b/src/jitlayers.cpp @@ -460,7 +460,7 @@ void JuliaOJIT::addModule(std::unique_ptr M) { #ifndef JL_NDEBUG // validate the relocations for M - for (Module::global_object_iterator I = M->global_object_begin(), E = M->global_object_end(); I != E; ) { + for (Module::global_object_iterator I = M->global_objects().begin(), E = M->global_objects().end(); I != E; ) { GlobalObject *F = &*I; ++I; if (F->isDeclaration()) { @@ -771,7 +771,7 @@ static void jl_merge_recursive(Module *m, Module *collector) // since the declarations may get destroyed by the jl_merge_module call. // this is also why we copy the Name string, rather than save a StringRef SmallVector to_finalize; - for (Module::global_object_iterator I = m->global_object_begin(), E = m->global_object_end(); I != E; ++I) { + for (Module::global_object_iterator I = m->global_objects().begin(), E = m->global_objects().end(); I != E; ++I) { GlobalObject *F = &*I; if (!F->isDeclaration()) { module_for_fname.erase(F->getName()); @@ -846,7 +846,7 @@ void jl_finalize_module(Module *m, bool shadow) { // record the function names that are part of this Module // so it can be added to the JIT when needed - for (Module::global_object_iterator I = m->global_object_begin(), E = m->global_object_end(); I != E; ++I) { + for (Module::global_object_iterator I = m->global_objects().begin(), E = m->global_objects().end(); I != E; ++I) { GlobalObject *F = &*I; if (!F->isDeclaration()) { if (isa(F)) { From ebce82e4f92ad6618e17fa7151191b811ed9920a Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Tue, 21 Jan 2020 14:04:55 -0500 Subject: [PATCH 3/4] [LLVM10] remove unused stream argument --- src/disasm.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/disasm.cpp b/src/disasm.cpp index e11ca2b8258f5..cabfe4659e475 100644 --- a/src/disasm.cpp +++ b/src/disasm.cpp @@ -914,7 +914,9 @@ static void jl_dump_asm_internal( MCDisassembler::DecodeStatus S; FuncMCView view = memoryObject.slice(Index); S = DisAsm->getInstruction(Inst, insSize, view, 0, +#if JL_LLVM_VERSION < 100000 /*VStream*/ nulls(), +#endif /*CStream*/ pass != 0 ? Streamer->GetCommentOS() : nulls()); if (pass != 0 && Streamer->GetCommentOS().tell() > 0) Streamer->GetCommentOS() << '\n'; From 38675f8cdb8e49ac39b303317d7b9dbd81e13226 Mon Sep 17 00:00:00 2001 From: Valentin Churavy Date: Tue, 21 Jan 2020 15:47:53 -0500 Subject: [PATCH 4/4] LLVM10 is going to hide target specific symbols and CUDAnative no longer uses this --- src/llvm-api.cpp | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/llvm-api.cpp b/src/llvm-api.cpp index 13d7deb7ad92d..ced0176a41be3 100644 --- a/src/llvm-api.cpp +++ b/src/llvm-api.cpp @@ -189,21 +189,6 @@ extern "C" JL_DLLEXPORT LLVMContextRef LLVMExtraGetValueContext(LLVMValueRef V) return wrap(&unwrap(V)->getContext()); } - -#if JL_LLVM_VERSION < 80000 -extern ModulePass *createNVVMReflectPass(); -extern "C" JL_DLLEXPORT void LLVMExtraAddNVVMReflectPass(LLVMPassManagerRef PM) -{ - unwrap(PM)->add(createNVVMReflectPass()); -} -#else -FunctionPass *createNVVMReflectPass(unsigned int SmVersion); -extern "C" JL_DLLEXPORT void LLVMExtraAddNVVMReflectFunctionPass(LLVMPassManagerRef PM, unsigned int SmVersion) -{ - unwrap(PM)->add(createNVVMReflectPass(SmVersion)); -} -#endif - extern "C" JL_DLLEXPORT void LLVMExtraAddTargetLibraryInfoByTiple(const char *T, LLVMPassManagerRef PM) {