[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