[Mlir-commits] [mlir] [mlir][memref][llvm] Infer llvm alias scopes attrs from `memref.distinct_objects` (PR #160512)

Krzysztof Drewniak llvmlistbot at llvm.org
Wed Sep 24 10:35:53 PDT 2025


================
@@ -911,15 +974,22 @@ struct StoreOpLowering : public LoadStoreOpLowering<memref::StoreOp> {
                   ConversionPatternRewriter &rewriter) const override {
     auto type = op.getMemRefType();
 
+    SmallVector<std::pair<StringAttr, Attribute>> importantAttrs =
+        copyImportantAttrs(op);
+
     // Per memref.store spec, the indices must be in-bounds:
     // 0 <= idx < dim_size, and additionally all offsets are non-negative,
     // hence inbounds and nuw are used when lowering to llvm.getelementptr.
     Value dataPtr =
         getStridedElementPtr(rewriter, op.getLoc(), type, adaptor.getMemref(),
                              adaptor.getIndices(), kNoWrapFlags);
-    rewriter.replaceOpWithNewOp<LLVM::StoreOp>(op, adaptor.getValue(), dataPtr,
-                                               op.getAlignment().value_or(0),
-                                               false, op.getNontemporal());
+    auto newOp = rewriter.replaceOpWithNewOp<LLVM::StoreOp>(
+        op, adaptor.getValue(), dataPtr, op.getAlignment().value_or(0), false,
+        op.getNontemporal());
+
+    for (auto [nameAttr, attr] : importantAttrs)
----------------
krzysz00 wrote:

You don't need the for loop, I think, or putting the extraction beforehand. You could just `setDiscardableAttrs()` from a filtered list or something to that effect.

https://github.com/llvm/llvm-project/pull/160512


More information about the Mlir-commits mailing list