[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