[Mlir-commits] [mlir] [mlir][gpu] Fix crash in RemoveDeadValues pass with gpu.launch ops (PR #182711)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Sat Feb 21 15:18:46 PST 2026


github-actions[bot] wrote:

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

* 3471 tests passed
* 414 tests skipped
* 2 tests failed

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

### MLIR
<details>
<summary>MLIR.Dialect/GPU/canonicalize.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe C:\_work\llvm-project\llvm-project\mlir\test\Dialect\GPU\canonicalize.mlir -canonicalize="test-convergence" --split-input-file -allow-unregistered-dialect | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Dialect\GPU\canonicalize.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Dialect\GPU\canonicalize.mlir' -canonicalize=test-convergence --split-input-file -allow-unregistered-dialect
# 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\Dialect\GPU\canonicalize.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Dialect\GPU\canonicalize.mlir:326:15: error: CHECK-NOT: excluded string found in input
# | // CHECK-NOT: gpu.launch
# |               ^
# | <stdin>:207:2: note: found here
# |  gpu.launch blocks(%arg0, %arg1, %arg2) in (%arg6 = %0#0, %arg7 = %0#1, %arg8 = %0#2) threads(%arg3, %arg4, %arg5) in (%arg9 = %0#3, %arg10 = %0#4, %arg11 = %0#5) {
# |  ^~~~~~~~~~
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Dialect\GPU\canonicalize.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |          .
# |          .
# |          .
# |        202:  
# |        203: // ----- 
# |        204: module { 
# |        205:  func.func @gpu_launch_without_side_effects() { 
# |        206:  %0:6 = "test.test1"() : () -> (index, index, index, index, index, index) 
# |        207:  gpu.launch blocks(%arg0, %arg1, %arg2) in (%arg6 = %0#0, %arg7 = %0#1, %arg8 = %0#2) threads(%arg3, %arg4, %arg5) in (%arg9 = %0#3, %arg10 = %0#4, %arg11 = %0#5) { 
# | not:326      !~~~~~~~~~                                                                                                                                                           error: no match expected
# |        208:  gpu.terminator 
# |        209:  } 
# |        210:  return 
# |        211:  } 
# |        212: } 
# |          .
# |          .
# |          .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>MLIR.Transforms/remove-dead-values.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe C:\_work\llvm-project\llvm-project\mlir\test\Transforms\remove-dead-values.mlir -remove-dead-values="canonicalize=0" -split-input-file | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\mlir\test\Transforms\remove-dead-values.mlir
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\mlir-opt.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Transforms\remove-dead-values.mlir' -remove-dead-values=canonicalize=0 -split-input-file
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Transforms\remove-dead-values.mlir:129:3: error: null operand found
# |   vector.print %arg0 : i32
# |   ^
# | C:\_work\llvm-project\llvm-project\mlir\test\Transforms\remove-dead-values.mlir:129:3: note: see current operation: "vector.print"(<<NULL VALUE>>) <{punctuation = #vector.punctuation<newline>}> : (<<NULL TYPE>>) -> ()
# `-----------------------------
# error: command failed with exit status: 1
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\mlir\test\Transforms\remove-dead-values.mlir'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\mlir\test\Transforms\remove-dead-values.mlir:124:17: error: CHECK-LABEL: expected string not found in input
# | // CHECK-LABEL: func.func private @clean_func_op_remove_side_effecting_op() {
# |                 ^
# | <stdin>:53:71: note: scanning from here
# |  func.func private @clean_func_op_remove_argument_and_return_value() {
# |                                                                       ^
# | <stdin>:65:2: note: possible intended match here
# |  func.func private @clean_func_op_remove_arguments() -> i32 {
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\mlir\test\Transforms\remove-dead-values.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |             48:  } 
# |             49: } 
# |             50:  
# |             51: // ----- 
# |             52: module { 
# |             53:  func.func private @clean_func_op_remove_argument_and_return_value() { 
# | label:124'0                                                                           X error: no match found
# |             54:  return 
# | label:124'0     ~~~~~~~~
# |             55:  } 
# | label:124'0     ~~~
# |             56:  func.func @main(%arg0: i32) { 
# | label:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             57:  call @clean_func_op_remove_argument_and_return_value() : () -> () 
# | label:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             58:  return 
# | label:124'0     ~~~~~~~~
# |             59:  } 
# | label:124'0     ~~~
# |             60: } 
# | label:124'0     ~~
# |             61:  
# | label:124'0     ~
# |             62: // ----- 
# | label:124'0     ~~~~~~~~~
# |             63: // ----- 
# | label:124'0     ~~~~~~~~~
# |             64: module { 
# | label:124'0     ~~~~~~~~~
# |             65:  func.func private @clean_func_op_remove_arguments() -> i32 { 
# | label:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | label:124'1      ?                                                             possible intended match
# |             66:  %c0_i32 = arith.constant 0 : i32 
# | label:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             67:  return %c0_i32 : i32 
# | label:124'0     ~~~~~~~~~~~~~~~~~~~~~~
# |             68:  } 
# | label:124'0     ~~~
# |             69:  func.func @main(%arg0: memref<i32>, %arg1: i32, %arg2: i32) -> (i32, memref<i32>) { 
# | label:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             70:  %0 = test.call_on_device @clean_func_op_remove_arguments(), %arg2 : (i32) -> i32 
# | label:124'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/182711


More information about the Mlir-commits mailing list