diff --git a/compilation/KernelTranslation/src/x86/memory_hierarchy.cpp b/compilation/KernelTranslation/src/x86/memory_hierarchy.cpp index 569b30c..5bc4e01 100644 --- a/compilation/KernelTranslation/src/x86/memory_hierarchy.cpp +++ b/compilation/KernelTranslation/src/x86/memory_hierarchy.cpp @@ -47,12 +47,9 @@ void mem_share2global(llvm::Module *M) { PointerType::get(array_type->getElementType(), 0); llvm::Constant *x1 = ConstantPointerNull::get(PointerTy); llvm::GlobalVariable *global_ptr = new llvm::GlobalVariable( - *M, PointerTy, false, llvm::GlobalValue::CommonLinkage, x1, - "wrapper_global_data", NULL, + *M, PointerTy, false, llvm::GlobalValue::ExternalLinkage, + NULL, "dynamic_shared_memory", NULL, llvm::GlobalValue::GeneralDynamicTLSModel, 0, false); - - global_ptr->setDSOLocal(true); - corresponding_global_memory.insert( std::pair(share_memory, global_ptr)); diff --git a/compilation/KernelTranslation/src/x86/tool.cpp b/compilation/KernelTranslation/src/x86/tool.cpp index 2ef85ed..d3024ac 100644 --- a/compilation/KernelTranslation/src/x86/tool.cpp +++ b/compilation/KernelTranslation/src/x86/tool.cpp @@ -234,6 +234,7 @@ void replace_dynamic_shared_memory(llvm::Module *M) { auto new_bit_cast = new BitCastInst(load_shared_memory, dynamic_shared_memory_addr->getType(), "new_bit_cast"); + new_bit_cast->insertAfter(load_shared_memory); dynamic_shared_memory_addr->replaceUsesWithIf(new_bit_cast, [&](Use &U) { auto *Instr = dyn_cast(U.getUser()); return Instr != new_bit_cast && Instr != load_shared_memory;