diff --git a/src/cgutils.cpp b/src/cgutils.cpp index f48f176033989..a2c931ebe06dd 100644 --- a/src/cgutils.cpp +++ b/src/cgutils.cpp @@ -367,14 +367,17 @@ static void jl_gen_llvm_gv_array(llvm::Module *mod, SmallVector &globalvars, + const char *sysimg_data, size_t sysimg_len) { Constant *data = ConstantDataArray::get(jl_LLVMContext, ArrayRef((const unsigned char*)sysimg_data, sysimg_len)); - addComdat(new GlobalVariable(*mod, data->getType(), true, GlobalVariable::ExternalLinkage, - data, "jl_system_image_data")); + globalvars.push_back(addComdat(new GlobalVariable(*mod, data->getType(), true, + GlobalVariable::ExternalLinkage, + data, "jl_system_image_data"))); Constant *len = ConstantInt::get(T_size, sysimg_len); - addComdat(new GlobalVariable(*mod, len->getType(), true, GlobalVariable::ExternalLinkage, - len, "jl_system_image_size")); + globalvars.push_back(addComdat(new GlobalVariable(*mod, len->getType(), true, + GlobalVariable::ExternalLinkage, + len, "jl_system_image_size"))); } static int32_t jl_assign_functionID(Function *functionObject) diff --git a/src/codegen.cpp b/src/codegen.cpp index 82691b7090a08..4575080f37aa7 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -387,7 +387,8 @@ struct jl_varinfo_t { // --- helpers for reloading IR image static void jl_gen_llvm_gv_array(llvm::Module *mod, SmallVector &globalvars); -static void jl_sysimg_to_llvm(llvm::Module *mod, const char *sysimg_data, size_t sysimg_len); +static void jl_sysimg_to_llvm(llvm::Module *mod, SmallVector &globalvars, + const char *sysimg_data, size_t sysimg_len); extern "C" void jl_dump_bitcode(char *fname) @@ -489,12 +490,12 @@ void jl_dump_objfile(char *fname, int jit_model, const char *sysimg_data, size_t SmallVector globalvars; #ifdef USE_MCJIT if (sysimg_data) - jl_sysimg_to_llvm(shadow_module, sysimg_data, sysimg_len); + jl_sysimg_to_llvm(shadow_module, globalvars, sysimg_data, sysimg_len); jl_gen_llvm_gv_array(shadow_module, globalvars); PM.run(*shadow_module); #else if (sysimg_data) - jl_sysimg_to_llvm(jl_Module, sysimg_data, sysimg_len); + jl_sysimg_to_llvm(jl_Module, globalvars, sysimg_data, sysimg_len); jl_gen_llvm_gv_array(jl_Module, globalvars); PM.run(*jl_Module); #endif