diff options
Diffstat (limited to 'mlir/lib/Target/LLVMIR')
-rw-r--r-- | mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp | 9 | ||||
-rw-r--r-- | mlir/lib/Target/LLVMIR/ModuleTranslation.cpp | 5 |
2 files changed, 9 insertions, 5 deletions
diff --git a/mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp b/mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp index 2f866e10dd8a..bda695c35ddb 100644 --- a/mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp +++ b/mlir/lib/Target/LLVMIR/ConvertFromLLVMIR.cpp @@ -432,10 +432,11 @@ GlobalOp Importer::processGlobal(llvm::GlobalVariable *gv) { alignment = align.value(); } - GlobalOp op = - b.create<GlobalOp>(UnknownLoc::get(context), type, gv->isConstant(), - convertLinkageFromLLVM(gv->getLinkage()), - gv->getName(), valueAttr, alignment); + GlobalOp op = b.create<GlobalOp>( + UnknownLoc::get(context), type, gv->isConstant(), + convertLinkageFromLLVM(gv->getLinkage()), gv->getName(), valueAttr, + alignment, /*addr_space=*/gv->getAddressSpace(), + /*dso_local=*/gv->isDSOLocal(), /*thread_local=*/gv->isThreadLocal()); if (gv->hasInitializer() && !valueAttr) { Region &r = op.getInitializerRegion(); diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp index 953fb2461520..127e7e15ccab 100644 --- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp @@ -661,7 +661,10 @@ LogicalResult ModuleTranslation::convertGlobals() { auto *var = new llvm::GlobalVariable( *llvmModule, type, op.getConstant(), linkage, cst, op.getSymName(), - /*InsertBefore=*/nullptr, llvm::GlobalValue::NotThreadLocal, addrSpace); + /*InsertBefore=*/nullptr, + op.getThreadLocal_() ? llvm::GlobalValue::GeneralDynamicTLSModel + : llvm::GlobalValue::NotThreadLocal, + addrSpace); if (op.getUnnamedAddr().hasValue()) var->setUnnamedAddr(convertUnnamedAddrToLLVM(*op.getUnnamedAddr())); |