[Mlir-commits] [mlir] [mlir][emitc] Avoid wrapping external functions in class (PR #224100)

purnima shrivastava llvmlistbot at llvm.org
Wed Sep 16 10:50:05 PDT 2026


https://github.com/purnima-nlp created https://github.com/llvm/llvm-project/pull/224100

`-wrap-emitc-func-in-class` crashes on external `emitc.func` declarations because the rewrite assumes the function has a body.

Skip external functions using `FuncOp::isExternal()` and add a regression test.

Fixes #224013.


>From 5ffb4d1ade000b38897fc03c1f87d6c6f85518a6 Mon Sep 17 00:00:00 2001
From: Purnima Shrivastava <purnimashrivastava05 at .com>
Date: Wed, 16 Sep 2026 23:17:19 +0530
Subject: [PATCH] [mlir][emitc] Avoid wrapping external functions in class

---
 mlir/lib/Dialect/EmitC/Transforms/WrapFuncInClass.cpp | 2 ++
 mlir/test/Dialect/EmitC/wrap-func-in-class.mlir       | 6 ++++++
 2 files changed, 8 insertions(+)

diff --git a/mlir/lib/Dialect/EmitC/Transforms/WrapFuncInClass.cpp b/mlir/lib/Dialect/EmitC/Transforms/WrapFuncInClass.cpp
index 894dcaab9305b..f0087f78f4fdb 100644
--- a/mlir/lib/Dialect/EmitC/Transforms/WrapFuncInClass.cpp
+++ b/mlir/lib/Dialect/EmitC/Transforms/WrapFuncInClass.cpp
@@ -76,6 +76,8 @@ class WrapFuncInClass : public OpRewritePattern<FuncOp> {
 
   LogicalResult matchAndRewrite(FuncOp funcOp,
                                 PatternRewriter &rewriter) const override {
+    if (funcOp.isExternal())
+      return failure();
 
     std::string className = llvm::formatv(
         /*Validate=*/false, classNameFormat.c_str(), funcOp.getName());
diff --git a/mlir/test/Dialect/EmitC/wrap-func-in-class.mlir b/mlir/test/Dialect/EmitC/wrap-func-in-class.mlir
index 91010689e1e65..e2f0c61de5b95 100644
--- a/mlir/test/Dialect/EmitC/wrap-func-in-class.mlir
+++ b/mlir/test/Dialect/EmitC/wrap-func-in-class.mlir
@@ -225,3 +225,9 @@ module attributes { } {
 // EXECUTE: execute()
 
 // CLASS-NAME-FORMAT: emitc.class @Custom_foo {
+
+// -----
+
+emitc.func private @external_func()
+
+// CHECK: emitc.func private @external_func()



More information about the Mlir-commits mailing list