[flang-commits] [flang] [mlir] [MLIR][OpenMP] Fix type mismatch in linear clause for INTEGER(8) variables (PR #173982)

via flang-commits flang-commits at lists.llvm.org
Tue Dec 30 04:41:39 PST 2025


github-actions[bot] wrote:

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

* 7204 tests passed
* 655 tests skipped
* 2 tests failed

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

### Flang
<details>
<summary>Flang.Integration/OpenMP/linear-i8-issue-173332.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 3
c:\_work\llvm-project\llvm-project\build\bin\flang.exe -fc1 -fopenmp -emit-llvm C:\_work\llvm-project\llvm-project\flang\test\Integration\OpenMP\linear-i8-issue-173332.f90 -o - | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\flang\test\Integration\OpenMP\linear-i8-issue-173332.f90
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\flang.exe' -fc1 -fopenmp -emit-llvm 'C:\_work\llvm-project\llvm-project\flang\test\Integration\OpenMP\linear-i8-issue-173332.f90' -o -
# 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\flang\test\Integration\OpenMP\linear-i8-issue-173332.f90'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\flang\test\Integration\OpenMP\linear-i8-issue-173332.f90:5:16: error: CHECK-LABEL: expected string not found in input
# | ! CHECK-LABEL: define {{.*}} @_QPrepro_issue_173332
# |                ^
# | <stdin>:1:1: note: scanning from here
# | ; ModuleID = 'FIRModule'
# | ^
# | <stdin>:12:1: note: possible intended match here
# | define void @repro_issue_173332_() {
# | ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\flang\test\Integration\OpenMP\linear-i8-issue-173332.f90
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            1: ; ModuleID = 'FIRModule' 
# | label:5'0     X~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |            2: source_filename = "FIRModule" 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            3: target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            4: target triple = "x86_64-pc-windows-msvc" 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            5:  
# | label:5'0     ~
# |            6: %struct.ident_t = type { i32, i32, i32, i32, ptr } 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            7:  
# | label:5'0     ~
# |            8: @0 = private unnamed_addr constant [23 x i8] c";unknown;unknown;0;0;;\00", align 1 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            9: @1 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 22, ptr @0 }, align 8 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           10: @2 = private unnamed_addr constant %struct.ident_t { i32 0, i32 66, i32 0, i32 22, ptr @0 }, align 8 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           11:  
# | label:5'0     ~
# |           12: define void @repro_issue_173332_() { 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | label:5'1     ?                                     possible intended match
# |           13:  %structArg = alloca { ptr }, align 8 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           14:  %1 = alloca i64, i64 1, align 8 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           15:  %2 = alloca i64, i64 1, align 8 
# | label:5'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           16:  br label %entry 
# | label:5'0     ~~~~~~~~~~~~~~~~~
# |           17:  
# | label:5'0     ~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Flang.Lower/OpenMP/parallel-do-simd-linear-i8.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 5
c:\_work\llvm-project\llvm-project\build\bin\flang.exe -fc1 -fopenmp -emit-hlfir C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-do-simd-linear-i8.f90 -o - 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-do-simd-linear-i8.f90
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\flang.exe' -fc1 -fopenmp -emit-hlfir 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-do-simd-linear-i8.f90' -o -
# 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\flang\test\Lower\OpenMP\parallel-do-simd-linear-i8.f90'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-do-simd-linear-i8.f90:15:11: error: CHECK: expected string not found in input
# |  ! CHECK: omp.parallel
# |           ^
# | <stdin>:14:34: note: scanning from here
# |  %c1_i32 = arith.constant 1 : i32
# |                                  ^
# | <stdin>:22:2: note: possible intended match here
# |  omp.simd linear(%4#0 = %c1_i32 : !fir.ref<i64>) private(@_QFtest_linear_i8Ei_private_i64 %2#0 -> %arg0 : !fir.ref<i64>) {
# |  ^
# | C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-do-simd-linear-i8.f90:35:16: error: CHECK-SAME: is not on the same line as the previous match
# |  ! CHECK-SAME: linear(%[[J]]#0 = {{.*}} : !fir.ref<i64>)
# |                ^
# | <stdin>:49:11: note: 'next' match was here
# |  omp.simd linear(%4#0 = %c2_i32 : !fir.ref<i64>) private(@_QFtest_linear_i8_with_stepEi_private_i64 %2#0 -> %arg0 : !fir.ref<i64>) {
# |           ^
# | <stdin>:48:12: note: previous match ended here
# |  omp.wsloop {
# |            ^
# | C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-do-simd-linear-i8.f90:85:11: error: CHECK: expected string not found in input
# |  ! CHECK: %[[STEP_J:.*]] = arith.constant 1 : i64
# |           ^
# | <stdin>:112:25: note: scanning from here
# |  %6:2 = hlfir.declare %5 {uniq_name = "_QFtest_multiple_i8Ek"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>)
# |                         ^
# | <stdin>:113:4: note: possible intended match here
# |  %c1_i32 = arith.constant 1 : i32
# |    ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-do-simd-linear-i8.f90
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |             9:  %1 = fir.alloca i64 {bindc_name = "i", uniq_name = "_QFtest_linear_i8Ei"} 
# |            10:  %2:2 = hlfir.declare %1 {uniq_name = "_QFtest_linear_i8Ei"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>) 
# |            11:  %3 = fir.alloca i64 {bindc_name = "j", uniq_name = "_QFtest_linear_i8Ej"} 
# |            12:  %4:2 = hlfir.declare %3 {uniq_name = "_QFtest_linear_i8Ej"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>) 
# |            13:  omp.parallel { 
# |            14:  %c1_i32 = arith.constant 1 : i32 
# | check:15'0                                      X error: no match found
# |            15:  %c1_i32_0 = arith.constant 1 : i32 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            16:  %c100_i32 = arith.constant 100 : i32 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            17:  %c1_i32_1 = arith.constant 1 : i32 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            18:  %5 = fir.convert %c1_i32_0 : (i32) -> i64 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            19:  %6 = fir.convert %c100_i32 : (i32) -> i64 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            20:  %7 = fir.convert %c1_i32_1 : (i32) -> i64 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            21:  omp.wsloop { 
# | check:15'0     ~~~~~~~~~~~~~~
# |            22:  omp.simd linear(%4#0 = %c1_i32 : !fir.ref<i64>) private(@_QFtest_linear_i8Ei_private_i64 %2#0 -> %arg0 : !fir.ref<i64>) { 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:15'1      ?                                                                                                                          possible intended match
# |            23:  omp.loop_nest (%arg1) : i64 = (%5) to (%6) inclusive step (%7) { 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            24:  %8:2 = hlfir.declare %arg0 {uniq_name = "_QFtest_linear_i8Ei"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>) 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            25:  hlfir.assign %arg1 to %8#0 : i64, !fir.ref<i64> 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            26:  omp.yield 
# | check:15'0     ~~~~~~~~~~~
# |            27:  } 
# | check:15'0     ~~~
# |             .
# |             .
# |             .
# |            44:  %c1_i32_0 = arith.constant 1 : i32 
# |            45:  %5 = fir.convert %c1_i32 : (i32) -> i64 
# |            46:  %6 = fir.convert %c100_i32 : (i32) -> i64 
# |            47:  %7 = fir.convert %c1_i32_0 : (i32) -> i64 
# |            48:  omp.wsloop { 
# |            49:  omp.simd linear(%4#0 = %c2_i32 : !fir.ref<i64>) private(@_QFtest_linear_i8_with_stepEi_private_i64 %2#0 -> %arg0 : !fir.ref<i64>) { 
# | same:35                  !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    error: match on wrong line
# |            50:  omp.loop_nest (%arg1) : i64 = (%5) to (%6) inclusive step (%7) { 
# |            51:  %8:2 = hlfir.declare %arg0 {uniq_name = "_QFtest_linear_i8_with_stepEi"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>) 
# |            52:  hlfir.assign %arg1 to %8#0 : i64, !fir.ref<i64> 
# |            53:  omp.yield 
# |            54:  } 
# |             .
# |             .
# |             .
# |           107:  %1 = fir.alloca i64 {bindc_name = "i", uniq_name = "_QFtest_multiple_i8Ei"} 
# |           108:  %2:2 = hlfir.declare %1 {uniq_name = "_QFtest_multiple_i8Ei"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>) 
# |           109:  %3 = fir.alloca i64 {bindc_name = "j", uniq_name = "_QFtest_multiple_i8Ej"} 
# |           110:  %4:2 = hlfir.declare %3 {uniq_name = "_QFtest_multiple_i8Ej"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>) 
# |           111:  %5 = fir.alloca i64 {bindc_name = "k", uniq_name = "_QFtest_multiple_i8Ek"} 
# |           112:  %6:2 = hlfir.declare %5 {uniq_name = "_QFtest_multiple_i8Ek"} : (!fir.ref<i64>) -> (!fir.ref<i64>, !fir.ref<i64>) 
# | check:85'0                             X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |           113:  %c1_i32 = arith.constant 1 : i32 
# | check:85'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:85'1        ?                               possible intended match
# |           114:  %c1_i32_0 = arith.constant 1 : i32 
# | check:85'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           115:  %c100_i32 = arith.constant 100 : i32 
# | check:85'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           116:  %c1_i32_1 = arith.constant 1 : i32 
# | check:85'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           117:  %7 = fir.convert %c1_i32_0 : (i32) -> i64 
# | check:85'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           118:  %8 = fir.convert %c100_i32 : (i32) -> i64 
# | check:85'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/173982


More information about the flang-commits mailing list