[flang-commits] [flang] [mlir] [flang][mlir] Add support for implicit linearization in omp.simd (PR #150386)

via flang-commits flang-commits at lists.llvm.org
Sat Dec 13 22:42:55 PST 2025


github-actions[bot] wrote:

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

* 7227 tests passed
* 597 tests skipped
* 3 tests failed

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

### Flang
<details>
<summary>Flang.Lower/OpenMP/order-clause.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -emit-hlfir -fopenmp -fopenmp-version=50 /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/order-clause.f90 -o - | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/order-clause.f90
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -emit-hlfir -fopenmp -fopenmp-version=50 /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/order-clause.f90 -o -
# .---command stderr------------
# | warning: OpenMP support for version 50 in flang is still incomplete
# `-----------------------------
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/order-clause.f90
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/order-clause.f90:7:10: error: CHECK: expected string not found in input
# |  !CHECK: omp.simd order(reproducible:concurrent) private({{.*}}) {
# |          ^
# | <stdin>:7:30: note: scanning from here
# |  func.func @_QPsimd_order() {
# |                              ^
# | <stdin>:14:39: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) order(reproducible:concurrent) private(@_QFsimd_orderEi_private_i32 %2#0 -> %arg0 : !fir.ref<i32>) {
# |                                       ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/order-clause.f90
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            1: module attributes {dlti.dl_spec = #dlti.dl_spec<!llvm.ptr<270> = dense<32> : vector<4xi64>, !llvm.ptr<271> = dense<32> : vector<4xi64>, !llvm.ptr<272> = dense<64> : vector<4xi64>, i64 = dense<64> : vector<2xi64>, i128 = dense<128> : vector<2xi64>, f80 = dense<128> : vector<2xi64>, !llvm.ptr = dense<64> : vector<4xi64>, i1 = dense<8> : vector<2xi64>, i8 = dense<8> : vector<2xi64>, i16 = dense<16> : vector<2xi64>, i32 = dense<32> : vector<2xi64>, f16 = dense<16> : vector<2xi64>, f64 = dense<64> : vector<2xi64>, f128 = dense<128> : vector<2xi64>, "dlti.endianness" = "little", "dlti.mangling_mode" = "e", "dlti.legal_int_widths" = array<i32: 8, 16, 32, 64>, "dlti.stack_alignment" = 128 : i64>, fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.data_layout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", llvm.ident = "flang version 22.0.0 (https://github.com/llvm/llvm-project c64d79bcda478dea58b70493029896fbedb23bca)", llvm.target_triple = "x86_64-unknown-linux-gnu", omp.is_gpu = false, omp.is_target_device = false, omp.target_triples = [], omp.version = #omp.version<version = 50>} { 
# |            2:  omp.private {type = private} @_QFdistribute_orderEi_private_i32 : i32 
# |            3:  omp.private {type = private} @_QFdo_simd_order_parallelEi_private_i32 : i32 
# |            4:  omp.private {type = private} @_QFdo_simd_orderEi_private_i32 : i32 
# |            5:  omp.private {type = private} @_QFdo_orderEi_private_i32 : i32 
# |            6:  omp.private {type = private} @_QFsimd_orderEi_private_i32 : i32 
# |            7:  func.func @_QPsimd_order() { 
# | check:7'0                                  X error: no match found
# |            8:  %0 = fir.dummy_scope : !fir.dscope 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            9:  %1 = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFsimd_orderEi"} 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           10:  %2:2 = hlfir.declare %1 {uniq_name = "_QFsimd_orderEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           11:  %c1_i32 = arith.constant 1 : i32 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           12:  %c10_i32 = arith.constant 10 : i32 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           13:  %c1_i32_0 = arith.constant 1 : i32 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           14:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) order(reproducible:concurrent) private(@_QFsimd_orderEi_private_i32 %2#0 -> %arg0 : !fir.ref<i32>) { 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:7'1                                           ?                                                                                                                  possible intended match
# |           15:  omp.loop_nest (%arg1) : i32 = (%c1_i32) to (%c10_i32) inclusive step (%c1_i32_0) { 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           16:  %3:2 = hlfir.declare %arg0 {uniq_name = "_QFsimd_orderEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           17:  hlfir.assign %arg1 to %3#0 : i32, !fir.ref<i32> 
# | check:7'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           18:  omp.yield 
# | check:7'0     ~~~~~~~~~~~
# |           19:  } 
# | check:7'0     ~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

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

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 4
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -fopenmp -emit-hlfir -fopenmp-version=50 /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd-linear.f90 -o - 2>&1 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd-linear.f90
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -fopenmp -emit-hlfir -fopenmp-version=50 /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd-linear.f90 -o -
# 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/flang/test/Lower/OpenMP/simd-linear.f90
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd-linear.f90:19:10: error: CHECK: expected string not found in input
# |  !CHECK: omp.simd linear(%[[X]]#0 = %[[const]] : !fir.ref<i32>) {{.*}}
# |          ^
# | <stdin>:14:34: note: scanning from here
# |  %c1_i32 = arith.constant 1 : i32
# |                                  ^
# | <stdin>:14:34: note: with "X" equal to "4"
# |  %c1_i32 = arith.constant 1 : i32
# |                                  ^
# | <stdin>:14:34: note: with "const" equal to "c1_i32"
# |  %c1_i32 = arith.constant 1 : i32
# |                                  ^
# | <stdin>:72:2: note: possible intended match here
# |  omp.simd linear(%6#0 = %10 : !fir.ref<i32>, %4#0 = %c1_i32_0 : !fir.ref<i32>) private(@_QFlinear_exprEi_private_i32 %4#0 -> %arg0 : !fir.ref<i32>) {
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd-linear.f90
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |             9:  %2:2 = hlfir.declare %1 {uniq_name = "_QFsimple_linearEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            10:  %3 = fir.alloca i32 {bindc_name = "x", uniq_name = "_QFsimple_linearEx"} 
# |            11:  %4:2 = hlfir.declare %3 {uniq_name = "_QFsimple_linearEx"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            12:  %5 = fir.alloca i32 {bindc_name = "y", uniq_name = "_QFsimple_linearEy"} 
# |            13:  %6:2 = hlfir.declare %5 {uniq_name = "_QFsimple_linearEy"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            14:  %c1_i32 = arith.constant 1 : i32 
# | check:19'0                                      X error: no match found
# | check:19'1                                        with "X" equal to "4"
# | check:19'2                                        with "const" equal to "c1_i32"
# |            15:  %c1_i32_0 = arith.constant 1 : i32 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            16:  %c10_i32 = arith.constant 10 : i32 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            17:  %c1_i32_1 = arith.constant 1 : i32 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            18:  omp.simd linear(%4#0 = %c1_i32 : !fir.ref<i32>, %2#0 = %c1_i32_1 : !fir.ref<i32>) private(@_QFsimple_linearEi_private_i32 %2#0 -> %arg0 : !fir.ref<i32>) { 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            19:  omp.loop_nest (%arg1) : i32 = (%c1_i32_0) to (%c10_i32) inclusive step (%c1_i32_1) { 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |            67:  %c4_i32 = arith.constant 4 : i32 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            68:  %10 = arith.addi %9, %c4_i32 : i32 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            69:  %c1_i32 = arith.constant 1 : i32 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            70:  %c10_i32 = arith.constant 10 : i32 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            71:  %c1_i32_0 = arith.constant 1 : i32 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            72:  omp.simd linear(%6#0 = %10 : !fir.ref<i32>, %4#0 = %c1_i32_0 : !fir.ref<i32>) private(@_QFlinear_exprEi_private_i32 %4#0 -> %arg0 : !fir.ref<i32>) { 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:19'3      ?                                                                                                                                                     possible intended match
# |            73:  omp.loop_nest (%arg1) : i32 = (%c1_i32) to (%c10_i32) inclusive step (%c1_i32_0) { 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            74:  %11:2 = hlfir.declare %arg0 {uniq_name = "_QFlinear_exprEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            75:  hlfir.assign %arg1 to %11#0 : i32, !fir.ref<i32> 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            76:  %12 = fir.load %6#0 : !fir.ref<i32> 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            77:  %c2_i32 = arith.constant 2 : i32 
# | check:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Flang.Lower/OpenMP/simd.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 4
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -flang-experimental-hlfir -emit-hlfir -fopenmp -fopenmp-version=50 /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90 -o - | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -flang-experimental-hlfir -emit-hlfir -fopenmp -fopenmp-version=50 /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90 -o -
# .---command stderr------------
# | warning: OpenMP support for version 50 in flang is still incomplete
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:240:24: warning: Alignment is not a power of 2, Aligned clause will be ignored [-Wopen-mp-usage]
# |     !$OMP SIMD ALIGNED(A:257)
# |                          ^^^
# `-----------------------------
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:16:16: error: CHECK-NEXT: expected string not found in input
# |  ! CHECK-NEXT: omp.simd private({{.*}}) {
# |                ^
# | <stdin>:34:36: note: scanning from here
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:35:2: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) private(@_QFsimdEi_private_i32 %2#0 -> %arg0 : !fir.ref<i32>) {
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:55:11: error: CHECK: expected string not found in input
# |  ! CHECK: omp.simd simdlen(2) private({{.*}}) {
# |           ^
# | <stdin>:89:36: note: scanning from here
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:90:39: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) simdlen(2) private(@_QFsimd_with_simdlen_clauseEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) {
# |                                       ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:75:11: error: CHECK: expected string not found in input
# |  ! CHECK: omp.simd simdlen(2) private({{.*}}) {
# |           ^
# | <stdin>:117:36: note: scanning from here
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:118:39: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) simdlen(2) private(@_QFsimd_with_simdlen_clause_from_paramEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) {
# |                                       ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:95:11: error: CHECK: expected string not found in input
# |  ! CHECK: omp.simd simdlen(6) private({{.*}}) {
# |           ^
# | <stdin>:145:36: note: scanning from here
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:146:39: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) simdlen(6) private(@_QFsimd_with_simdlen_clause_from_expr_from_paramEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) {
# |                                       ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:114:11: error: CHECK: expected string not found in input
# |  ! CHECK: omp.simd safelen(2) private({{.*}}) {
# |           ^
# | <stdin>:171:36: note: scanning from here
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:172:39: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) safelen(2) private(@_QFsimd_with_safelen_clauseEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) {
# |                                       ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:134:11: error: CHECK: expected string not found in input
# |  ! CHECK: omp.simd safelen(6) private({{.*}}) {
# |           ^
# | <stdin>:199:36: note: scanning from here
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:200:39: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) safelen(6) private(@_QFsimd_with_safelen_clause_from_expr_from_paramEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) {
# |                                       ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:153:11: error: CHECK: expected string not found in input
# |  ! CHECK: omp.simd safelen(2) simdlen(1) private({{.*}}) {
# |           ^
# | <stdin>:225:36: note: scanning from here
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:226:37: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) safelen(2) simdlen(1) private(@_QFsimd_with_simdlen_safelen_clauseEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) {
# |                                     ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:239:9: error: CHECK: expected string not found in input
# | !CHECK: omp.simd private
# |         ^
# | <stdin>:533:273: note: scanning from here
# |  %5:2 = hlfir.declare %1 {fortran_attrs = #fir.var_attrs<allocatable>, uniq_name = "_QFaligned_non_power_of_twoEa"} : (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) -> (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>, !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>)
# |                                                                                                                                                                                                                                                                                 ^
# | <stdin>:548:2: note: possible intended match here
# |  omp.simd linear(%7#0 = %c1_i32_2 : !fir.ref<i32>) private(@_QFaligned_non_power_of_twoEi_private_i32 %7#0 -> %arg0 : !fir.ref<i32>) {
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:255:10: error: CHECK: expected string not found in input
# |  !CHECK: omp.simd nontemporal(%[[A_DECL]]#0, %[[C_DECL]]#0 : !fir.ref<i32>, !fir.ref<i32>) private({{.*}}) {
# |          ^
# | <stdin>:591:36: note: scanning from here
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:591:36: note: with "A_DECL" equal to "2"
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:591:36: note: with "C_DECL" equal to "6"
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:592:39: note: possible intended match here
# |  omp.simd linear(%8#0 = %c1_i32_0 : !fir.ref<i32>) nontemporal(%2#0, %6#0 : !fir.ref<i32>, !fir.ref<i32>) private(@_QFsimd_with_nontemporal_clauseEi_private_i32 %8#0 -> %arg1 : !fir.ref<i32>) {
# |                                       ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:274:9: error: CHECK: expected string not found in input
# | !CHECK: omp.simd private(@_QFlastprivate_with_simdEsum_private_f32 %[[VAR_SUM_DECLARE]]#0 -> %[[VAR_SUM_PINNED:.*]], @{{.*}}) {
# |         ^
# | <stdin>:610:122: note: scanning from here
# |  %4:2 = hlfir.declare %3 {uniq_name = "_QFlastprivate_with_simdEsum"} : (!fir.ref<f32>) -> (!fir.ref<f32>, !fir.ref<f32>)
# |                                                                                                                          ^
# | <stdin>:610:122: note: with "VAR_SUM_DECLARE" equal to "4"
# |  %4:2 = hlfir.declare %3 {uniq_name = "_QFlastprivate_with_simdEsum"} : (!fir.ref<f32>) -> (!fir.ref<f32>, !fir.ref<f32>)
# |                                                                                                                          ^
# | <stdin>:614:42: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) private(@_QFlastprivate_with_simdEsum_private_f32 %4#0 -> %arg0, @_QFlastprivate_with_simdEi_private_i32 %2#0 -> %arg1 : !fir.ref<f32>, !fir.ref<i32>) {
# |                                          ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90:301:16: error: CHECK-NEXT: expected string not found in input
# |  ! CHECK-NEXT: omp.simd private({{.*}}) reduction(@[[REDUCER]] %[[X:.*]]#0 -> %[[X_RED:.*]] : !fir.ref<i32>) {
# |                ^
# | <stdin>:652:36: note: scanning from here
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:652:36: note: with "REDUCER" equal to "add_reduction_i32"
# |  %c1_i32_0 = arith.constant 1 : i32
# |                                    ^
# | <stdin>:653:130: note: possible intended match here
# |  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) private(@_QFsimd_with_reduction_clauseEi_private_i32 %2#0 -> %arg0 : !fir.ref<i32>) reduction(@add_reduction_i32 %4#0 -> %arg1 : !fir.ref<i32>) {
# |                                                                                                                                  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/simd.f90
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |             29:  %0 = fir.dummy_scope : !fir.dscope 
# |             30:  %1 = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFsimdEi"} 
# |             31:  %2:2 = hlfir.declare %1 {uniq_name = "_QFsimdEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |             32:  %c1_i32 = arith.constant 1 : i32 
# |             33:  %c9_i32 = arith.constant 9 : i32 
# |             34:  %c1_i32_0 = arith.constant 1 : i32 
# | next:16'0                                          X error: no match found
# |             35:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) private(@_QFsimdEi_private_i32 %2#0 -> %arg0 : !fir.ref<i32>) { 
# | next:16'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:16'1        ?                                                                                                                  possible intended match
# |             36:  omp.loop_nest (%arg1) : i32 = (%c1_i32) to (%c9_i32) inclusive step (%c1_i32_0) { 
# | next:16'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             37:  %3:2 = hlfir.declare %arg0 {uniq_name = "_QFsimdEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | next:16'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             38:  hlfir.assign %arg1 to %3#0 : i32, !fir.ref<i32> 
# | next:16'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             39:  %c6_i32 = arith.constant 6 : i32 
# | next:16'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             40:  %4 = fir.address_of(@_QQclX56e7953221bb37f6ff3dbd4ad88bda5c) : !fir.ref<!fir.char<1,90>> 
# | next:16'0       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |             84:  %2:2 = hlfir.declare %1 {uniq_name = "_QFsimd_with_simdlen_clauseEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |             85:  %3:2 = hlfir.declare %arg0 dummy_scope %0 arg 1 {uniq_name = "_QFsimd_with_simdlen_clauseEn"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |             86:  %4:2 = hlfir.declare %arg1 dummy_scope %0 arg 2 {uniq_name = "_QFsimd_with_simdlen_clauseEthreshold"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |             87:  %c1_i32 = arith.constant 1 : i32 
# |             88:  %5 = fir.load %3#0 : !fir.ref<i32> 
# |             89:  %c1_i32_0 = arith.constant 1 : i32 
# | check:55'0                                         X error: no match found
# |             90:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) simdlen(2) private(@_QFsimd_with_simdlen_clauseEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) { 
# | check:55'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:55'1                                            ?                                                                                                            possible intended match
# |             91:  omp.loop_nest (%arg3) : i32 = (%c1_i32) to (%5) inclusive step (%c1_i32_0) { 
# | check:55'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             92:  %6:2 = hlfir.declare %arg2 {uniq_name = "_QFsimd_with_simdlen_clauseEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:55'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             93:  hlfir.assign %arg3 to %6#0 : i32, !fir.ref<i32> 
# | check:55'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             94:  %c6_i32 = arith.constant 6 : i32 
# | check:55'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             95:  %7 = fir.address_of(@_QQclX56e7953221bb37f6ff3dbd4ad88bda5c) : !fir.ref<!fir.char<1,90>> 
# | check:55'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            112:  %4 = fir.address_of(@_QFsimd_with_simdlen_clause_from_paramECsimdlen) : !fir.ref<i32> 
# |            113:  %5:2 = hlfir.declare %4 {fortran_attrs = #fir.var_attrs<parameter>, uniq_name = "_QFsimd_with_simdlen_clause_from_paramECsimdlen"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            114:  %6:2 = hlfir.declare %arg1 dummy_scope %0 arg 2 {uniq_name = "_QFsimd_with_simdlen_clause_from_paramEthreshold"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            115:  %c1_i32 = arith.constant 1 : i32 
# |            116:  %7 = fir.load %3#0 : !fir.ref<i32> 
# |            117:  %c1_i32_0 = arith.constant 1 : i32 
# | check:75'0                                         X error: no match found
# |            118:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) simdlen(2) private(@_QFsimd_with_simdlen_clause_from_paramEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) { 
# | check:75'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:75'1                                            ?                                                                                                                       possible intended match
# |            119:  omp.loop_nest (%arg3) : i32 = (%c1_i32) to (%7) inclusive step (%c1_i32_0) { 
# | check:75'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            120:  %8:2 = hlfir.declare %arg2 {uniq_name = "_QFsimd_with_simdlen_clause_from_paramEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:75'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            121:  hlfir.assign %arg3 to %8#0 : i32, !fir.ref<i32> 
# | check:75'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            122:  %c6_i32 = arith.constant 6 : i32 
# | check:75'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            123:  %9 = fir.address_of(@_QQclX56e7953221bb37f6ff3dbd4ad88bda5c) : !fir.ref<!fir.char<1,90>> 
# | check:75'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            140:  %4 = fir.address_of(@_QFsimd_with_simdlen_clause_from_expr_from_paramECsimdlen) : !fir.ref<i32> 
# |            141:  %5:2 = hlfir.declare %4 {fortran_attrs = #fir.var_attrs<parameter>, uniq_name = "_QFsimd_with_simdlen_clause_from_expr_from_paramECsimdlen"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            142:  %6:2 = hlfir.declare %arg1 dummy_scope %0 arg 2 {uniq_name = "_QFsimd_with_simdlen_clause_from_expr_from_paramEthreshold"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            143:  %c1_i32 = arith.constant 1 : i32 
# |            144:  %7 = fir.load %3#0 : !fir.ref<i32> 
# |            145:  %c1_i32_0 = arith.constant 1 : i32 
# | check:95'0                                         X error: no match found
# |            146:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) simdlen(6) private(@_QFsimd_with_simdlen_clause_from_expr_from_paramEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) { 
# | check:95'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:95'1                                            ?                                                                                                                                 possible intended match
# |            147:  omp.loop_nest (%arg3) : i32 = (%c1_i32) to (%7) inclusive step (%c1_i32_0) { 
# | check:95'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            148:  %8:2 = hlfir.declare %arg2 {uniq_name = "_QFsimd_with_simdlen_clause_from_expr_from_paramEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:95'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            149:  hlfir.assign %arg3 to %8#0 : i32, !fir.ref<i32> 
# | check:95'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            150:  %c6_i32 = arith.constant 6 : i32 
# | check:95'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            151:  %9 = fir.address_of(@_QQclX56e7953221bb37f6ff3dbd4ad88bda5c) : !fir.ref<!fir.char<1,90>> 
# | check:95'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            166:  %2:2 = hlfir.declare %1 {uniq_name = "_QFsimd_with_safelen_clauseEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            167:  %3:2 = hlfir.declare %arg0 dummy_scope %0 arg 1 {uniq_name = "_QFsimd_with_safelen_clauseEn"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            168:  %4:2 = hlfir.declare %arg1 dummy_scope %0 arg 2 {uniq_name = "_QFsimd_with_safelen_clauseEthreshold"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            169:  %c1_i32 = arith.constant 1 : i32 
# |            170:  %5 = fir.load %3#0 : !fir.ref<i32> 
# |            171:  %c1_i32_0 = arith.constant 1 : i32 
# | check:114'0                                        X error: no match found
# |            172:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) safelen(2) private(@_QFsimd_with_safelen_clauseEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) { 
# | check:114'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:114'1                                           ?                                                                                                            possible intended match
# |            173:  omp.loop_nest (%arg3) : i32 = (%c1_i32) to (%5) inclusive step (%c1_i32_0) { 
# | check:114'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            174:  %6:2 = hlfir.declare %arg2 {uniq_name = "_QFsimd_with_safelen_clauseEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:114'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            175:  hlfir.assign %arg3 to %6#0 : i32, !fir.ref<i32> 
# | check:114'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            176:  %c6_i32 = arith.constant 6 : i32 
# | check:114'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            177:  %7 = fir.address_of(@_QQclX56e7953221bb37f6ff3dbd4ad88bda5c) : !fir.ref<!fir.char<1,90>> 
# | check:114'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            194:  %4 = fir.address_of(@_QFsimd_with_safelen_clause_from_expr_from_paramECsafelen) : !fir.ref<i32> 
# |            195:  %5:2 = hlfir.declare %4 {fortran_attrs = #fir.var_attrs<parameter>, uniq_name = "_QFsimd_with_safelen_clause_from_expr_from_paramECsafelen"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            196:  %6:2 = hlfir.declare %arg1 dummy_scope %0 arg 2 {uniq_name = "_QFsimd_with_safelen_clause_from_expr_from_paramEthreshold"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            197:  %c1_i32 = arith.constant 1 : i32 
# |            198:  %7 = fir.load %3#0 : !fir.ref<i32> 
# |            199:  %c1_i32_0 = arith.constant 1 : i32 
# | check:134'0                                        X error: no match found
# |            200:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) safelen(6) private(@_QFsimd_with_safelen_clause_from_expr_from_paramEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) { 
# | check:134'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:134'1                                           ?                                                                                                                                 possible intended match
# |            201:  omp.loop_nest (%arg3) : i32 = (%c1_i32) to (%7) inclusive step (%c1_i32_0) { 
# | check:134'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            202:  %8:2 = hlfir.declare %arg2 {uniq_name = "_QFsimd_with_safelen_clause_from_expr_from_paramEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:134'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            203:  hlfir.assign %arg3 to %8#0 : i32, !fir.ref<i32> 
# | check:134'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            204:  %c6_i32 = arith.constant 6 : i32 
# | check:134'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            205:  %9 = fir.address_of(@_QQclX56e7953221bb37f6ff3dbd4ad88bda5c) : !fir.ref<!fir.char<1,90>> 
# | check:134'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            220:  %2:2 = hlfir.declare %1 {uniq_name = "_QFsimd_with_simdlen_safelen_clauseEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            221:  %3:2 = hlfir.declare %arg0 dummy_scope %0 arg 1 {uniq_name = "_QFsimd_with_simdlen_safelen_clauseEn"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            222:  %4:2 = hlfir.declare %arg1 dummy_scope %0 arg 2 {uniq_name = "_QFsimd_with_simdlen_safelen_clauseEthreshold"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            223:  %c1_i32 = arith.constant 1 : i32 
# |            224:  %5 = fir.load %3#0 : !fir.ref<i32> 
# |            225:  %c1_i32_0 = arith.constant 1 : i32 
# | check:153'0                                        X error: no match found
# |            226:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) safelen(2) simdlen(1) private(@_QFsimd_with_simdlen_safelen_clauseEi_private_i32 %2#0 -> %arg2 : !fir.ref<i32>) { 
# | check:153'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:153'1                                         ?                                                                                                                                 possible intended match
# |            227:  omp.loop_nest (%arg3) : i32 = (%c1_i32) to (%5) inclusive step (%c1_i32_0) { 
# | check:153'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            228:  %6:2 = hlfir.declare %arg2 {uniq_name = "_QFsimd_with_simdlen_safelen_clauseEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:153'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            229:  hlfir.assign %arg3 to %6#0 : i32, !fir.ref<i32> 
# | check:153'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            230:  %c6_i32 = arith.constant 6 : i32 
# | check:153'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            231:  %7 = fir.address_of(@_QQclX56e7953221bb37f6ff3dbd4ad88bda5c) : !fir.ref<!fir.char<1,90>> 
# | check:153'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            528:  %2 = fir.zero_bits !fir.heap<!fir.array<?xi32>> 
# |            529:  %c0 = arith.constant 0 : index 
# |            530:  %3 = fir.shape %c0 : (index) -> !fir.shape<1> 
# |            531:  %4 = fir.embox %2(%3) : (!fir.heap<!fir.array<?xi32>>, !fir.shape<1>) -> !fir.box<!fir.heap<!fir.array<?xi32>>> 
# |            532:  fir.store %4 to %1 : !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>> 
# |            533:  %5:2 = hlfir.declare %1 {fortran_attrs = #fir.var_attrs<allocatable>, uniq_name = "_QFaligned_non_power_of_twoEa"} : (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) -> (!fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>, !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>) 
# | check:239'0                                                                                                                                                                                                                                                                                     X error: no match found
# |            534:  %6 = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFaligned_non_power_of_twoEi"} 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            535:  %7:2 = hlfir.declare %6 {uniq_name = "_QFaligned_non_power_of_twoEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            536:  %c10_i32 = arith.constant 10 : i32 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            537:  %8 = fir.convert %c10_i32 : (i32) -> index 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            538:  %c0_0 = arith.constant 0 : index 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            543:  %13 = fir.embox %11(%12) : (!fir.heap<!fir.array<?xi32>>, !fir.shape<1>) -> !fir.box<!fir.heap<!fir.array<?xi32>>> 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            544:  fir.store %13 to %5#0 : !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>> 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            545:  %c1_i32 = arith.constant 1 : i32 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            546:  %c10_i32_1 = arith.constant 10 : i32 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            547:  %c1_i32_2 = arith.constant 1 : i32 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            548:  omp.simd linear(%7#0 = %c1_i32_2 : !fir.ref<i32>) private(@_QFaligned_non_power_of_twoEi_private_i32 %7#0 -> %arg0 : !fir.ref<i32>) { 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:239'1      ?                                                                                                                                      possible intended match
# |            549:  omp.loop_nest (%arg1) : i32 = (%c1_i32) to (%c10_i32_1) inclusive step (%c1_i32_2) { 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            550:  %18:2 = hlfir.declare %arg0 {uniq_name = "_QFaligned_non_power_of_twoEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            551:  hlfir.assign %arg1 to %18#0 : i32, !fir.ref<i32> 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            552:  %19 = fir.load %18#0 : !fir.ref<i32> 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            553:  %20 = fir.load %5#0 : !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>> 
# | check:239'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            586:  %7 = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFsimd_with_nontemporal_clauseEi"} 
# |            587:  %8:2 = hlfir.declare %7 {uniq_name = "_QFsimd_with_nontemporal_clauseEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            588:  %9:2 = hlfir.declare %arg0 dummy_scope %0 arg 1 {uniq_name = "_QFsimd_with_nontemporal_clauseEn"} : (!fir.ref<i32>, !fir.dscope) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            589:  %c1_i32 = arith.constant 1 : i32 
# |            590:  %10 = fir.load %9#0 : !fir.ref<i32> 
# |            591:  %c1_i32_0 = arith.constant 1 : i32 
# | check:255'0                                        X error: no match found
# | check:255'1                                          with "A_DECL" equal to "2"
# | check:255'2                                          with "C_DECL" equal to "6"
# |            592:  omp.simd linear(%8#0 = %c1_i32_0 : !fir.ref<i32>) nontemporal(%2#0, %6#0 : !fir.ref<i32>, !fir.ref<i32>) private(@_QFsimd_with_nontemporal_clauseEi_private_i32 %8#0 -> %arg1 : !fir.ref<i32>) { 
# | check:255'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:255'3                                           ?                                                                                                                                                            possible intended match
# |            593:  omp.loop_nest (%arg2) : i32 = (%c1_i32) to (%10) inclusive step (%c1_i32_0) { 
# | check:255'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            594:  %11:2 = hlfir.declare %arg1 {uniq_name = "_QFsimd_with_nontemporal_clauseEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:255'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            595:  hlfir.assign %arg2 to %11#0 : i32, !fir.ref<i32> 
# | check:255'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            596:  %12 = fir.load %2#0 : !fir.ref<i32> 
# | check:255'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            597:  %13 = fir.load %4#0 : !fir.ref<i32> 
# | check:255'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            605:  func.func @_QPlastprivate_with_simd() { 
# | check:255'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            606:  %0 = fir.dummy_scope : !fir.dscope 
# |            607:  %1 = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFlastprivate_with_simdEi"} 
# |            608:  %2:2 = hlfir.declare %1 {uniq_name = "_QFlastprivate_with_simdEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            609:  %3 = fir.alloca f32 {bindc_name = "sum", uniq_name = "_QFlastprivate_with_simdEsum"} 
# |            610:  %4:2 = hlfir.declare %3 {uniq_name = "_QFlastprivate_with_simdEsum"} : (!fir.ref<f32>) -> (!fir.ref<f32>, !fir.ref<f32>) 
# | check:274'0                                                                                                                              X error: no match found
# | check:274'1                                                                                                                                with "VAR_SUM_DECLARE" equal to "4"
# |            611:  %c1_i32 = arith.constant 1 : i32 
# | check:274'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            612:  %c100_i32 = arith.constant 100 : i32 
# | check:274'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            613:  %c1_i32_0 = arith.constant 1 : i32 
# | check:274'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            614:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) private(@_QFlastprivate_with_simdEsum_private_f32 %4#0 -> %arg0, @_QFlastprivate_with_simdEi_private_i32 %2#0 -> %arg1 : !fir.ref<f32>, !fir.ref<i32>) { 
# | check:274'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:274'2                                              ?                                                                                                                                                                   possible intended match
# |            615:  omp.loop_nest (%arg2) : i32 = (%c1_i32) to (%c100_i32) inclusive step (%c1_i32_0) { 
# | check:274'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            616:  %5:2 = hlfir.declare %arg0 {uniq_name = "_QFlastprivate_with_simdEsum"} : (!fir.ref<f32>) -> (!fir.ref<f32>, !fir.ref<f32>) 
# | check:274'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            617:  %6:2 = hlfir.declare %arg1 {uniq_name = "_QFlastprivate_with_simdEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:274'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            618:  hlfir.assign %arg2 to %6#0 : i32, !fir.ref<i32> 
# | check:274'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            619:  %7 = fir.load %6#0 : !fir.ref<i32> 
# | check:274'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            647:  %4:2 = hlfir.declare %3 {uniq_name = "_QFsimd_with_reduction_clauseEx"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# |            648:  %c0_i32 = arith.constant 0 : i32 
# |            649:  hlfir.assign %c0_i32 to %4#0 : i32, !fir.ref<i32> 
# |            650:  %c1_i32 = arith.constant 1 : i32 
# |            651:  %c9_i32 = arith.constant 9 : i32 
# |            652:  %c1_i32_0 = arith.constant 1 : i32 
# | next:301'0                                         X error: no match found
# | next:301'1                                           with "REDUCER" equal to "add_reduction_i32"
# |            653:  omp.simd linear(%2#0 = %c1_i32_0 : !fir.ref<i32>) private(@_QFsimd_with_reduction_clauseEi_private_i32 %2#0 -> %arg0 : !fir.ref<i32>) reduction(@add_reduction_i32 %4#0 -> %arg1 : !fir.ref<i32>) { 
# | next:301'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:301'2                                                                                                                                       ?                                                                    possible intended match
# |            654:  omp.loop_nest (%arg2) : i32 = (%c1_i32) to (%c9_i32) inclusive step (%c1_i32_0) { 
# | next:301'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            655:  %5:2 = hlfir.declare %arg0 {uniq_name = "_QFsimd_with_reduction_clauseEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | next:301'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            656:  %6:2 = hlfir.declare %arg1 {uniq_name = "_QFsimd_with_reduction_clauseEx"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | next:301'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            657:  hlfir.assign %arg2 to %5#0 : i32, !fir.ref<i32> 
# | next:301'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            658:  %7 = fir.load %6#0 : !fir.ref<i32> 
# | next:301'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/150386


More information about the flang-commits mailing list