From 3d22cc1f36fd27b5eae156c46442cc3af005c783 Mon Sep 17 00:00:00 2001 From: Ruobing Han Date: Thu, 15 Sep 2022 20:38:48 -0400 Subject: [PATCH] fix bug for dynamic shared memory --- compilation/KernelTranslation/src/x86/memory_hierarchy.cpp | 7 ++----- compilation/KernelTranslation/src/x86/tool.cpp | 1 + 2 files changed, 3 insertions(+), 5 deletions(-) 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;