[Mlir-commits] [mlir] [mlir][dataflow] Add visitBranchRegionArgument interface to SparseBackwardDataFlowAnalysis and apply it in LivenessAnalysis/RemoveDeadValues (PR #169816)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Sat Dec 27 04:36:29 PST 2025


github-actions[bot] wrote:

<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results

* 7264 tests passed
* 598 tests skipped
* 4 tests failed

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

### MLIR
<details>
<summary>MLIR.Dialect/Arith/int-range-interface.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/mlir-opt -allow-unregistered-dialect -int-range-optimizations -canonicalize /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-interface.mlir | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-interface.mlir
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/mlir-opt -allow-unregistered-dialect -int-range-optimizations -canonicalize /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-interface.mlir
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-interface.mlir
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-interface.mlir:105:11: error: CHECK: expected string not found in input
# | // CHECK: return %[[true]]
# |           ^
# | <stdin>:49:29: note: scanning from here
# |  %true = arith.constant true
# |                             ^
# | <stdin>:49:29: note: with "true" equal to "true"
# |  %true = arith.constant true
# |                             ^
# | <stdin>:55:2: note: possible intended match here
# |  return %0 : i1
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-interface.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |             44:  } 
# |             45:  func.func @for_loop_with_constant_result() -> i1 { 
# |             46:  %c0 = arith.constant 0 : index 
# |             47:  %c1 = arith.constant 1 : index 
# |             48:  %c4 = arith.constant 4 : index 
# |             49:  %true = arith.constant true 
# | check:105'0                                 X error: no match found
# | check:105'1                                   with "true" equal to "true"
# |             50:  %0 = scf.for %arg0 = %c0 to %c4 step %c1 iter_args(%arg1 = %true) -> (i1) { 
# | check:105'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             51:  %1 = arith.cmpi ule, %arg0, %c4 : index 
# | check:105'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             52:  %2 = arith.andi %1, %arg1 : i1 
# | check:105'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             53:  scf.yield %2 : i1 
# | check:105'0     ~~~~~~~~~~~~~~~~~~~
# |             54:  } 
# | check:105'0     ~~~
# |             55:  return %0 : i1 
# | check:105'0     ~~~~~~~~~~~~~~~~
# | check:105'2      ?               possible intended match
# |             56:  } 
# | check:105'0     ~~~
# |             57:  func.func @while_false(%arg0: index) -> index { 
# | check:105'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |             58:  %false = arith.constant false 
# |             59:  %c2 = arith.constant 2 : index 
# |             60:  %0 = arith.divui %arg0, %c2 : index 
# |              .
# |              .
# |              .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>MLIR.Dialect/Arith/int-range-narrowing.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/mlir-opt --arith-int-range-narrowing="int-bitwidths-supported=1,8,16,24,32" /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-narrowing.mlir | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-narrowing.mlir
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/mlir-opt --arith-int-range-narrowing=int-bitwidths-supported=1,8,16,24,32 /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-narrowing.mlir
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-narrowing.mlir
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-narrowing.mlir:322:15: error: CHECK-DAG: expected string not found in input
# | // CHECK-DAG: %[[BOUND_I8:.+]] = arith.index_castui %[[BOUND]] : index to i8
# |               ^
# | <stdin>:164:40: note: scanning from here
# |  scf.for %arg0 = %c16 to %1 step %c64 {
# |                                        ^
# | <stdin>:164:40: note: with "BOUND" equal to "1"
# |  scf.for %arg0 = %c16 to %1 step %c64 {
# |                                        ^
# | <stdin>:166:2: note: possible intended match here
# |  %3 = arith.minsi %2, %c64 : index
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/int-range-narrowing.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |          159:  %c0 = arith.constant 0 : index 
# |          160:  %c16 = arith.constant 16 : index 
# |          161:  %c64 = arith.constant 64 : index 
# |          162:  %0 = test.with_bounds {smax = 63 : index, smin = 0 : index, umax = 63 : index, umin = 0 : index} : index 
# |          163:  %1 = test.with_bounds {smax = 112 : index, smin = 16 : index, umax = 112 : index, umin = 16 : index} : index 
# |          164:  scf.for %arg0 = %c16 to %1 step %c64 { 
# | dag:322'0                                            X error: no match found
# | dag:322'1                                              with "BOUND" equal to "1"
# |          165:  %2 = arith.subi %1, %arg0 : index 
# | dag:322'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          166:  %3 = arith.minsi %2, %c64 : index 
# | dag:322'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | dag:322'2      ?                                  possible intended match
# |          167:  %4 = arith.subi %3, %0 : index 
# | dag:322'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          168:  %5 = arith.cmpi slt, %4, %c0 : index 
# | dag:322'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          169:  scf.if %5 { 
# | dag:322'0     ~~~~~~~~~~~~~
# |          170:  vector.print str "sideeffect" 
# | dag:322'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |          171:  } 
# | dag:322'0     ~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>MLIR.Dialect/Arith/unsigned-when-equivalent.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/mlir-opt -arith-unsigned-when-equivalent /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/unsigned-when-equivalent.mlir | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/unsigned-when-equivalent.mlir
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/mlir-opt -arith-unsigned-when-equivalent /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/unsigned-when-equivalent.mlir
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/unsigned-when-equivalent.mlir
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/unsigned-when-equivalent.mlir:69:11: error: CHECK: expected string not found in input
# | // CHECK: %[[v:.*]] = arith.remui %[[arg1]]
# |           ^
# | <stdin>:45:17: note: scanning from here
# |  scf.for %arg1 = %c0 to %c8 step %c1 {
# |                 ^
# | <stdin>:45:17: note: with "arg1" equal to "arg1"
# |  scf.for %arg1 = %c0 to %c8 step %c1 {
# |                 ^
# | <stdin>:46:2: note: possible intended match here
# |  %0 = arith.remsi %arg1, %c4 : index
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Dialect/Arith/unsigned-when-equivalent.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            40:  func.func @preserves_structure(%arg0: memref<8xindex>) { 
# |            41:  %c0 = arith.constant 0 : index 
# |            42:  %c1 = arith.constant 1 : index 
# |            43:  %c4 = arith.constant 4 : index 
# |            44:  %c8 = arith.constant 8 : index 
# |            45:  scf.for %arg1 = %c0 to %c8 step %c1 { 
# | check:69'0                     X~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# | check:69'1                                             with "arg1" equal to "arg1"
# |            46:  %0 = arith.remsi %arg1, %c4 : index 
# | check:69'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:69'2      ?                                    possible intended match
# |            47:  %1 = arith.addi %0, %0 : index 
# | check:69'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            48:  %2 = arith.cmpi sle, %1, %c4 : index 
# | check:69'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            49:  scf.if %2 { 
# | check:69'0     ~~~~~~~~~~~~~
# |            50:  memref.store %1, %arg0[%arg1] : memref<8xindex> 
# | check:69'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            51:  } 
# | check:69'0     ~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>MLIR.Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/mlir-opt -int-range-optimizations /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/mlir-opt -int-range-optimizations /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir:53:11: error: CHECK: expected string not found in input
# | // CHECK: test.reflect_bounds {smax = 1 : index, smin = 0 : index, umax = 1 : index, umin = 0 : index}
# |           ^
# | <stdin>:31:23: note: scanning from here
# |  func.func @for_bounds() -> index {
# |                       ^
# | <stdin>:38:7: note: possible intended match here
# |  %4 = test.reflect_bounds {smax = 9223372036854775807 : index, smin = -9223372036854775808 : index, umax = -1 : index, umin = 0 : index} %3 : index
# |       ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir:195:12: error: CHECK: expected string not found in input
# |  // CHECK: test.reflect_bounds {smax = 31 : index, smin = 0 : index, umax = 31 : index, umin = 0 : index}
# |            ^
# | <stdin>:113:12: note: scanning from here
# |  scf.forall (%arg1, %arg2) in (%0, 64) {
# |            ^
# | <stdin>:114:43: note: possible intended match here
# |  %1 = test.reflect_bounds {smax = 9223372036854775807 : index, smin = -9223372036854775808 : index, umax = -1 : index, umin = 0 : index} %arg1 : index
# |                                           ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/mlir/test/Interfaces/InferIntRangeInterface/infer-int-range-test-ops.mlir
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |             26:  cf.br ^bb2 
# |             27:  ^bb2: // pred: ^bb1 
# |             28:  %3 = test.reflect_bounds {smax = 4 : index, smin = 3 : index, umax = 4 : index, umin = 3 : index} %2 : index 
# |             29:  return %3 : index 
# |             30:  } 
# |             31:  func.func @for_bounds() -> index { 
# | check:53'0                            X~~~~~~~~~~~~~ error: no match found
# |             32:  %0 = "test.constant"() <{value = 0 : index}> : () -> index 
# | check:53'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             33:  %1 = "test.constant"() <{value = 1 : index}> : () -> index 
# | check:53'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             34:  %2 = "test.constant"() <{value = 2 : index}> : () -> index 
# | check:53'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             35:  %3 = scf.for %arg0 = %0 to %2 step %1 iter_args(%arg1 = %0) -> (index) { 
# | check:53'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             36:  scf.yield %arg0 : index 
# | check:53'0      ~~~~~~~~~~~~~~~~~~~~~~~~~
# |             37:  } 
# | check:53'0      ~~~
# |             38:  %4 = test.reflect_bounds {smax = 9223372036854775807 : index, smin = -9223372036854775808 : index, umax = -1 : index, umin = 0 : index} %3 : index 
# | check:53'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:53'1            ?                                                                                                                                              possible intended match
# |             39:  return %4 : index 
# | check:53'0      ~~~~~~~~~~~~~~~~~~~
# |             40:  } 
# | check:53'0      ~~~
# |             41:  func.func @no_analysis_of_loop_variants() -> index { 
# | check:53'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             42:  %0 = "test.constant"() <{value = 0 : index}> : () -> index 
# |             43:  %1 = "test.constant"() <{value = 1 : index}> : () -> index 
# |              .
# |              .
# |              .
# |            108:  return 
# |            109:  } 
# |            110:  func.func @multiple_loop_ivs(%arg0: memref<?x64xi32>) { 
# |            111:  %c0_i32 = arith.constant 0 : i32 
# |            112:  %0 = test.with_bounds {smax = 32 : index, smin = 1 : index, umax = 32 : index, umin = 1 : index} : index 
# |            113:  scf.forall (%arg1, %arg2) in (%0, 64) { 
# | check:195'0                X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |            114:  %1 = test.reflect_bounds {smax = 9223372036854775807 : index, smin = -9223372036854775808 : index, umax = -1 : index, umin = 0 : index} %arg1 : index 
# | check:195'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:195'1                                               ?                                                                                                             possible intended match
# |            115:  %2 = test.reflect_bounds {smax = 9223372036854775807 : index, smin = -9223372036854775808 : index, umax = -1 : index, umin = 0 : index} %arg2 : index 
# | check:195'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            116:  memref.store %c0_i32, %arg0[%1, %2] : memref<?x64xi32> 
# | check:195'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            117:  } 
# | check:195'0     ~~~
# |            118:  return 
# | check:195'0     ~~~~~~~~
# |            119:  } 
# | check:195'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/169816


More information about the Mlir-commits mailing list