summaryrefslogtreecommitdiff
path: root/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp')
-rw-r--r--mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
index cea9d1fdec80..1d92b5d5562b 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+++ b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
@@ -779,13 +779,15 @@ public:
auto linkage = storageClass == spirv::StorageClass::Private
? LLVM::Linkage::Private
: LLVM::Linkage::External;
+ StringAttr locationAttrName = op.getLocationAttrName();
+ IntegerAttr locationAttr = op.getLocationAttr();
auto newGlobalOp = rewriter.replaceOpWithNewOp<LLVM::GlobalOp>(
op, dstType, isConstant, linkage, op.getSymName(), Attribute(),
/*alignment=*/0, storageClassToAddressSpace(clientAPI, storageClass));
// Attach location attribute if applicable
- if (op.getLocationAttr())
- newGlobalOp->setAttr(op.getLocationAttrName(), op.getLocationAttr());
+ if (locationAttr)
+ newGlobalOp->setAttr(locationAttrName, locationAttr);
return success();
}
@@ -1426,7 +1428,6 @@ public:
headerBlock->getOperations().front());
if (!condBrOp)
return failure();
- rewriter.eraseBlock(headerBlock);
// Branch from merge block to continue block.
auto *mergeBlock = op.getMergeBlock();
@@ -1444,6 +1445,7 @@ public:
falseBlock,
condBrOp.getFalseTargetOperands());
+ rewriter.eraseBlock(headerBlock);
rewriter.inlineRegionBefore(op.getBody(), continueBlock);
rewriter.replaceOp(op, continueBlock->getArguments());
return success();