[Mlir-commits] [mlir] 43ba999 - [mlir][scf] ExecuteRegionOp folders to consider no_inline attribute (#158083)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Sun Sep 14 02:07:43 PDT 2025


Author: Dor Arad
Date: 2025-09-14T11:07:38+02:00
New Revision: 43ba999d1205f787e76f4d4a01f45380d373efe9

URL: https://github.com/llvm/llvm-project/commit/43ba999d1205f787e76f4d4a01f45380d373efe9
DIFF: https://github.com/llvm/llvm-project/commit/43ba999d1205f787e76f4d4a01f45380d373efe9.diff

LOG: [mlir][scf] ExecuteRegionOp folders to consider no_inline attribute (#158083)

Fix missing handling of no_inline existence in ExecuteRegionOp  folders.

Co-authored-by: Dor Arad <dor.arad at mobileye.com>

Added: 
    

Modified: 
    mlir/lib/Dialect/SCF/IR/SCF.cpp
    mlir/test/Dialect/SCF/canonicalize.mlir

Removed: 
    


################################################################################
diff  --git a/mlir/lib/Dialect/SCF/IR/SCF.cpp b/mlir/lib/Dialect/SCF/IR/SCF.cpp
index 45b14fcf8aadd..c35989ecba6cd 100644
--- a/mlir/lib/Dialect/SCF/IR/SCF.cpp
+++ b/mlir/lib/Dialect/SCF/IR/SCF.cpp
@@ -237,6 +237,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