[Mlir-commits] [mlir] [mlir][scf] ExecuteRegionOp folders to consider no_inline attribute (PR #158083)
Dor Arad
llvmlistbot at llvm.org
Thu Sep 11 07:04:50 PDT 2025
https://github.com/undor created https://github.com/llvm/llvm-project/pull/158083
Fix missing handling of no_inline existence in ExecuteRegionOp folders.
>From 8fd7a2804002808afd8ce61fe8790bd656ec54c5 Mon Sep 17 00:00:00 2001
From: Dor Arad <dor.arad at mobileye.com>
Date: Thu, 11 Sep 2025 16:58:24 +0300
Subject: [PATCH] [mlir][scf] ExecuteRegionOp folders to consider no_inline
attribute
---
mlir/lib/Dialect/SCF/IR/SCF.cpp | 2 ++
mlir/test/Dialect/SCF/canonicalize.mlir | 18 ++++++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/mlir/lib/Dialect/SCF/IR/SCF.cpp b/mlir/lib/Dialect/SCF/IR/SCF.cpp
index 84f9777a443fd..c2dfd7a8a4e5f 100644
--- a/mlir/lib/Dialect/SCF/IR/SCF.cpp
+++ b/mlir/lib/Dialect/SCF/IR/SCF.cpp
@@ -236,6 +236,8 @@ struct MultiBlockExecuteInliner : public OpRewritePattern<ExecuteRegionOp> {
LogicalResult matchAndRewrite(ExecuteRegionOp op,
PatternRewriter &rewriter) const override {
+ if (op.getNoInline())
+ return failure();
if (!isa<FunctionOpInterface, ExecuteRegionOp>(op->getParentOp()))
return failure();
diff --git a/mlir/test/Dialect/SCF/canonicalize.mlir b/mlir/test/Dialect/SCF/canonicalize.mlir
index 2752c492cb2be..4ad2da8388eb7 100644
--- a/mlir/test/Dialect/SCF/canonicalize.mlir
+++ b/mlir/test/Dialect/SCF/canonicalize.mlir
@@ -1483,6 +1483,24 @@ func.func @execute_region_no_inline() {
// -----
+// CHECK-LABEL: func @execute_region_under_func_no_inline
+func.func @execute_region_under_func_no_inline() {
+ "test.foo"() : () -> ()
+ %v = scf.execute_region -> i64 no_inline {
+ %x = "test.val"() : () -> i64
+ scf.yield %x : i64
+ }
+ "test.bar"(%v) : (i64) -> ()
+ return
+}
+
+// CHECK-NEXT: "test.foo"() : () -> ()
+// CHECK-NEXT: scf.execute_region
+// CHECK-NEXT: %[[VAL:.*]] = "test.val"() : () -> i64
+// CHECK-NEXT: scf.yield %[[VAL]] : i64
+
+// -----
+
// CHECK-LABEL: func @func_execute_region_inline
func.func @func_execute_region_inline() {
"test.foo"() : () -> ()
More information about the Mlir-commits
mailing list