5252#include " llvm/ADT/APInt.h"
5353#include " llvm/ADT/ArrayRef.h"
5454#include " llvm/ADT/STLExtras.h"
55- #include " llvm/ADT/SmallVector.h"
5655#include " llvm/ADT/StringRef.h"
5756#include " llvm/ADT/Twine.h"
5857#include " llvm/ADT/TypeSwitch.h"
@@ -2353,10 +2352,10 @@ mlir::LogicalResult CIRToLLVMSwitchFlatOpLowering::matchAndRewrite(
23532352// / insertion point to the end of the initializer block.
23542353void CIRToLLVMGlobalOpLowering::createRegionInitializedLLVMGlobalOp (
23552354 cir::GlobalOp op, mlir::Attribute attr,
2356- mlir::ConversionPatternRewriter &rewriter) const {
2355+ mlir::ConversionPatternRewriter &rewriter,
2356+ SmallVector<mlir::NamedAttribute> attributes) const {
23572357 const auto llvmType =
23582358 convertTypeForMemory (*getTypeConverter (), dataLayout, op.getSymType ());
2359- SmallVector<mlir::NamedAttribute> attributes;
23602359 auto newGlobalOp = rewriter.replaceOpWithNewOp <mlir::LLVM::GlobalOp>(
23612360 op, llvmType, op.getConstant (), convertLinkage (op.getLinkage ()),
23622361 op.getSymName (), nullptr ,
@@ -2433,7 +2432,8 @@ mlir::LogicalResult CIRToLLVMGlobalOpLowering::matchAndRewrite(
24332432 // TODO(cir): once LLVM's dialect has proper equivalent attributes this
24342433 // should be updated. For now, we use a custom op to initialize globals
24352434 // to the appropriate value.
2436- createRegionInitializedLLVMGlobalOp (op, init.value (), rewriter);
2435+ createRegionInitializedLLVMGlobalOp (op, init.value (), rewriter,
2436+ attributes);
24372437 return mlir::success ();
24382438 } else if (auto constArr =
24392439 mlir::dyn_cast<cir::ConstArrayAttr>(init.value ())) {
@@ -2448,7 +2448,8 @@ mlir::LogicalResult CIRToLLVMGlobalOpLowering::matchAndRewrite(
24482448 // Failed to use a compact attribute as an initializer:
24492449 // initialize elements individually.
24502450 if (!(init = lowerConstArrayAttr (constArr, getTypeConverter ()))) {
2451- createRegionInitializedLLVMGlobalOp (op, constArr, rewriter);
2451+ createRegionInitializedLLVMGlobalOp (op, constArr, rewriter,
2452+ attributes);
24522453 return mlir::success ();
24532454 }
24542455 } else {
@@ -2466,6 +2467,7 @@ mlir::LogicalResult CIRToLLVMGlobalOpLowering::matchAndRewrite(
24662467 auto abiOp = mlir::cast<GlobalOp>(rewriter.clone (*op.getOperation ()));
24672468 abiOp.setInitialValueAttr (abiValue);
24682469 abiOp.setSymType (abiValue.getType ());
2470+ abiOp->setAttrs (attributes);
24692471 rewriter.replaceOp (op, abiOp);
24702472 return mlir::success ();
24712473 } else {
0 commit comments