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

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Sep 16 10:50:44 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-mlir

Author: purnima shrivastava (purnima-nlp)

<details>
<summary>Changes</summary>

`-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.


---
Full diff: https://github.com/llvm/llvm-project/pull/224100.diff


2 Files Affected:

- (modified) mlir/lib/Dialect/EmitC/Transforms/WrapFuncInClass.cpp (+2) 
- (modified) mlir/test/Dialect/EmitC/wrap-func-in-class.mlir (+6) 


``````````diff
diff --git a/mlir/lib/Dialect/EmitC/Transforms/WrapFuncInClass.cpp b/mlir/lib/Dialect/EmitC/Transforms/WrapFuncInClass.cpp
index 894dcaab9305ba..f0087f78f4fdb3 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 91010689e1e659..e2f0c61de5b950 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()

``````````

</details>


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


More information about the Mlir-commits mailing list