[Mlir-commits] [mlir] [mlir][func] Account for named attributes without a dialect prefix in `FuncToLLVM` lowering pass (PR #182987)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Feb 25 08:05:56 PST 2026


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Windows-->
# :window: Windows x64 Test Results

* 3476 tests passed
* 414 tests skipped
* 4 tests failed

## Failed Tests
(click on a test name to see its output)

### MLIR
<details>
<summary>MLIR.Conversion/FuncToLLVM/convert-funcs.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe -convert-func-to-llvm -convert-cf-to-llvm -reconcile-unrealized-casts -split-input-file -verify-diagnostics C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\convert-funcs.mlir | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\convert-funcs.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' -convert-func-to-llvm -convert-cf-to-llvm -reconcile-unrealized-casts -split-input-file -verify-diagnostics 'C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\convert-funcs.mlir'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\convert-funcs.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\convert-funcs.mlir:65:16: error: CHECK-SAME: expected string not found in input
# | // CHECK-SAME: target_cpu = "gfx90a"
# |                ^
# | <stdin>:27:25: note: scanning from here
# |  llvm.func @target_cpu() attributes {sym_visibility = "private"}
# |                         ^
# | <stdin>:28:13: note: possible intended match here
# |  llvm.func @target_features() attributes {sym_visibility = "private"}
# |             ^
# | C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\convert-funcs.mlir:69:16: error: CHECK-SAME: expected string not found in input
# | // CHECK-SAME: target_features = #llvm.target_features<["+sme", "+sve"]>
# |                ^
# | <stdin>:28:30: note: scanning from here
# |  llvm.func @target_features() attributes {sym_visibility = "private"}
# |                              ^
# | <stdin>:28:31: note: possible intended match here
# |  llvm.func @target_features() attributes {sym_visibility = "private"}
# |                               ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\convert-funcs.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |           22:  llvm.return %0 : i32 
# |           23:  } 
# |           24:  llvm.func @variadic_func(%arg0: i32, ...) attributes {func.varargs = true} { 
# |           25:  llvm.return 
# |           26:  } 
# |           27:  llvm.func @target_cpu() attributes {sym_visibility = "private"} 
# | same:65'0                             X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |           28:  llvm.func @target_features() attributes {sym_visibility = "private"} 
# | same:65'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | same:65'1                 ?                                                          possible intended match
# | same:69'0                                  X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# | same:69'1                                   ?                                        possible intended match
# |           29: } 
# | same:69'0     ~~
# |           30:  
# | same:69'0     ~
# |           31: // ----- 
# | same:69'0     ~~~~~~~~~
# |           32: module { 
# | same:69'0     ~~~~~~~~~
# |           33:  llvm.func @private_callee(%arg0: f32) -> i32 attributes {sym_visibility = "private"} { 
# | same:69'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>MLIR.Conversion/FuncToLLVM/emit-c-wrappers-for-external-callers.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe -llvm-request-c-wrappers -convert-func-to-llvm C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-callers.mlir | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-callers.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' -llvm-request-c-wrappers -convert-func-to-llvm 'C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-callers.mlir'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-callers.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-callers.mlir:94:15: error: CHECK-NOT: excluded string found in input
# | // CHECK-NOT: llvm.linkage
# |               ^
# | <stdin>:115:97: note: found here
# |  llvm.func @_mlir_ciface_drop_linkage_attr(%arg0: !llvm.ptr) attributes {llvm.emit_c_interface, llvm.linkage = #llvm.linkage<external>} {
# |                                                                                                 ^~~~~~~~~~~~
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-callers.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |         .
# |         .
# |         .
# |       110:  llvm.func @drop_linkage_attr() -> (!llvm.struct<(ptr, ptr, i64)> {test.returnOne}) attributes {llvm.emit_c_interface, llvm.linkage = #llvm.linkage<external>} { 
# |       111:  %alloc = memref.alloc() : memref<f32> 
# |       112:  %0 = builtin.unrealized_conversion_cast %alloc : memref<f32> to !llvm.struct<(ptr, ptr, i64)> 
# |       113:  llvm.return %0 : !llvm.struct<(ptr, ptr, i64)> 
# |       114:  } 
# |       115:  llvm.func @_mlir_ciface_drop_linkage_attr(%arg0: !llvm.ptr) attributes {llvm.emit_c_interface, llvm.linkage = #llvm.linkage<external>} { 
# | not:94                                                                                                     !~~~~~~~~~~~                               error: no match expected
# |       116:  %0 = llvm.call @drop_linkage_attr() : () -> !llvm.struct<(ptr, ptr, i64)> 
# |       117:  llvm.store %0, %arg0 : !llvm.struct<(ptr, ptr, i64)>, !llvm.ptr 
# |       118:  llvm.return 
# |       119:  } 
# |       120: } 
# |       121:  
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>MLIR.Conversion/FuncToLLVM/emit-c-wrappers-for-external-functions.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe -llvm-request-c-wrappers -convert-func-to-llvm C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-functions.mlir | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-functions.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' -llvm-request-c-wrappers -convert-func-to-llvm 'C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-functions.mlir'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-functions.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-functions.mlir:64:15: error: CHECK-NOT: excluded string found in input
# | // CHECK-NOT: llvm.linkage
# |               ^
# | <stdin>:95:90: note: found here
# |  llvm.func @_mlir_ciface_drop_linkage_attr(!llvm.ptr) attributes {llvm.emit_c_interface, llvm.linkage = #llvm.linkage<weak>, sym_visibility = "private"}
# |                                                                                          ^~~~~~~~~~~~
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Conversion\FuncToLLVM\emit-c-wrappers-for-external-functions.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |         .
# |         .
# |         .
# |        90:  %1 = llvm.alloca %0 x !llvm.struct<(ptr, ptr, i64)> : (i64) -> !llvm.ptr 
# |        91:  llvm.call @_mlir_ciface_drop_linkage_attr(%1) : (!llvm.ptr) -> () 
# |        92:  %2 = llvm.load %1 : !llvm.ptr -> !llvm.struct<(ptr, ptr, i64)> 
# |        93:  llvm.return %2 : !llvm.struct<(ptr, ptr, i64)> 
# |        94:  } 
# |        95:  llvm.func @_mlir_ciface_drop_linkage_attr(!llvm.ptr) attributes {llvm.emit_c_interface, llvm.linkage = #llvm.linkage<weak>, sym_visibility = "private"} 
# | not:64                                                                                              !~~~~~~~~~~~                                                     error: no match expected
# |        96: } 
# |        97:  
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>MLIR.mlir-opt/async.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 3
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe C:\_work\llvm-project\llvm-project\mlir\test\mlir-opt\async.mlir -pass-pipeline="builtin.module(async-to-async-runtime,func.func(async-runtime-ref-counting,async-runtime-ref-counting-opt),convert-async-to-llvm,func.func(convert-linalg-to-loops,convert-scf-to-cf),finalize-memref-to-llvm,func.func(convert-arith-to-llvm),convert-func-to-llvm,reconcile-unrealized-casts)"  | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\mlir-opt\async.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\mlir-opt\async.mlir' '-pass-pipeline=builtin.module(async-to-async-runtime,func.func(async-runtime-ref-counting,async-runtime-ref-counting-opt),convert-async-to-llvm,func.func(convert-linalg-to-loops,convert-scf-to-cf),finalize-memref-to-llvm,func.func(convert-arith-to-llvm),convert-func-to-llvm,reconcile-unrealized-casts)'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\mlir-opt\async.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\mlir-opt\async.mlir:6:11: error: CHECK: expected string not found in input
# | // CHECK: llvm.func @async_execute_fn{{.*}}attributes{{.*}}presplitcoroutine
# |           ^
# | <stdin>:1:1: note: scanning from here
# | module {
# | ^
# | <stdin>:65:8: note: possible intended match here
# |  %48 = llvm.call @async_execute_fn_1(%41, %42, %43, %44, %45, %46, %47) : (!llvm.ptr, !llvm.ptr, i64, i64, i64, i64, !llvm.ptr) -> !llvm.ptr
# |        ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\mlir-opt\async.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            1: module { 
# | check:6'0     X~~~~~~~~ error: no match found
# |            2:  llvm.func @malloc(i64) -> !llvm.ptr 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            3:  llvm.func @free(!llvm.ptr) 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            4:  llvm.func @aligned_alloc(i64, i64) -> !llvm.ptr 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            5:  llvm.func @main() { 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~
# |            6:  %0 = llvm.mlir.constant(1 : index) : i64 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# |           60:  %43 = llvm.extractvalue %20[2] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>  
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           61:  %44 = llvm.extractvalue %20[3, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>  
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           62:  %45 = llvm.extractvalue %20[4, 0] : !llvm.struct<(ptr, ptr, i64, array<1 x i64>, array<1 x i64>)>  
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           63:  %46 = llvm.extractvalue %34[0] : !llvm.struct<(i64, ptr)>  
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           64:  %47 = llvm.extractvalue %34[1] : !llvm.struct<(i64, ptr)>  
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           65:  %48 = llvm.call @async_execute_fn_1(%41, %42, %43, %44, %45, %46, %47) : (!llvm.ptr, !llvm.ptr, i64, i64, i64, i64, !llvm.ptr) -> !llvm.ptr 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:6'1            ?                                                                                                                                      possible intended match
# |           66:  llvm.call @mlirAsyncRuntimeAwaitToken(%48) : (!llvm.ptr) -> () 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           67:  %49 = llvm.call @mlirAsyncRuntimeIsTokenError(%48) : (!llvm.ptr) -> i1 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           68:  llvm.call @mlirAsyncRuntimeDropRef(%48, %3) : (!llvm.ptr, i64) -> () 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           69:  %50 = llvm.xor %49, %2 : i1 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           70:  cf.assert %50, "Awaited async operand is in error state" 
# | check:6'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the `infrastructure` label.

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


More information about the Mlir-commits mailing list