[Mlir-commits] [mlir] [mlir][memref] Add HoistCastPos pattern to castOp (PR #168337)

Mehdi Amini llvmlistbot at llvm.org
Tue Nov 18 05:19:10 PST 2025


================
@@ -797,6 +797,35 @@ OpFoldResult CastOp::fold(FoldAdaptor adaptor) {
   return succeeded(foldMemRefCast(*this)) ? getResult() : Value();
 }
 
+namespace {
+struct HoistCastPos : public OpRewritePattern<CastOp> {
+  using OpRewritePattern<CastOp>::OpRewritePattern;
+  LogicalResult matchAndRewrite(CastOp castOp,
+                                PatternRewriter &rewriter) const override {
+    if (auto *defineOp = castOp.getSource().getDefiningOp()) {
+      if (defineOp->getBlock() != castOp->getBlock()) {
+        rewriter.moveOpAfter(castOp.getOperation(), defineOp);
+        return success();
+      }
+      return failure();
+    } else {
----------------
joker-eph wrote:

```suggestion
    }
```

Nit: no else-after-return

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


More information about the Mlir-commits mailing list