[flang-commits] [flang] [flang][OpenMP][CUDA] Set allocator_idx on privatized allocatable device array descriptors (PR #186945)

via flang-commits flang-commits at lists.llvm.org
Tue Mar 17 09:29:36 PDT 2026


github-actions[bot] wrote:

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

* 4042 tests passed
* 245 tests skipped
* 5 tests failed

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

### Flang
<details>
<summary>Flang.Lower/OpenMP/DelayedPrivatization/target-private-allocatable.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 3
c:\_work\llvm-project\llvm-project\build\bin\flang.exe -fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging    -o - C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-allocatable.f90 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-allocatable.f90 --check-prefix=CPU
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\flang.exe' -fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging -o - 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-allocatable.f90'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-allocatable.f90' --check-prefix=CPU
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-allocatable.f90:42:13: error: CPU-NEXT: expected string not found in input
# | ! CPU-NEXT: %[[ZERO_BOX:.*]] = fir.embox %[[PRIV_ARG_BOX]] : (!fir.heap<i32>) -> [[DESC_TYPE]]
# |             ^
# | <stdin>:9:13: note: scanning from here
# |  fir.if %3 {
# |             ^
# | <stdin>:9:13: note: with "PRIV_ARG_BOX" equal to "1"
# |  fir.if %3 {
# |             ^
# | <stdin>:9:13: note: with "DESC_TYPE" equal to "!fir.box<!fir.heap<i32>>"
# |  fir.if %3 {
# |             ^
# | <stdin>:14:2: note: possible intended match here
# |  %5 = fir.embox %4 : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>>
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-allocatable.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" = "w", "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:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", llvm.ident = "flang version 23.0.0 (https://github.com/llvm/llvm-project 61eb5c863145212c30d1afdc205790c46f3c9a0a)", llvm.target_triple = "x86_64-pc-windows-msvc", omp.is_gpu = false, omp.is_target_device = false, omp.requires = #omp<clause_requires none>, omp.target_triples = [], omp.version = #omp.version<version = 31>} { 
# |            2:  omp.private {type = private} @_QFtarget_allocatableEalloc_var_private_box_heap_i32 : !fir.box<!fir.heap<i32>> init { 
# |            3:  ^bb0(%arg0: !fir.ref<!fir.box<!fir.heap<i32>>>, %arg1: !fir.ref<!fir.box<!fir.heap<i32>>>): 
# |            4:  %0 = fir.load %arg0 : !fir.ref<!fir.box<!fir.heap<i32>>> 
# |            5:  %1 = fir.box_addr %0 : (!fir.box<!fir.heap<i32>>) -> !fir.heap<i32> 
# |            6:  %2 = fir.convert %1 : (!fir.heap<i32>) -> i64 
# |            7:  %c0_i64 = arith.constant 0 : i64 
# |            8:  %3 = arith.cmpi eq, %2, %c0_i64 : i64 
# |            9:  fir.if %3 { 
# | next:42'0                 X error: no match found
# | next:42'1                   with "PRIV_ARG_BOX" equal to "1"
# | next:42'2                   with "DESC_TYPE" equal to "!fir.box<!fir.heap<i32>>"
# |           10:  %4 = fir.embox %1 {allocator_idx = 0 : i32} : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>> 
# | next:42'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           11:  fir.store %4 to %arg1 : !fir.ref<!fir.box<!fir.heap<i32>>> 
# | next:42'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           12:  } else { 
# | next:42'0     ~~~~~~~~~~
# |           13:  %4 = fir.allocmem i32 {bindc_name = "", uniq_name = ""} 
# | next:42'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           14:  %5 = fir.embox %4 : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>> 
# | next:42'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:42'3      ?                                                                 possible intended match
# |           15:  fir.store %5 to %arg1 : !fir.ref<!fir.box<!fir.heap<i32>>> 
# | next:42'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           16:  } 
# | next:42'0     ~~~
# |           17:  omp.yield(%arg1 : !fir.ref<!fir.box<!fir.heap<i32>>>) 
# | next:42'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           18:  } dealloc { 
# | next:42'0     ~~~~~~~~~~~~~
# |           19:  ^bb0(%arg0: !fir.ref<!fir.box<!fir.heap<i32>>>): 
# | next:42'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Flang.Lower/OpenMP/DelayedPrivatization/target-private-multiple-variables.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 3
c:\_work\llvm-project\llvm-project\build\bin\flang.exe -fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging    -o - C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-multiple-variables.f90 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-multiple-variables.f90
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\flang.exe' -fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization-staging -o - 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-multiple-variables.f90'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-multiple-variables.f90'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-multiple-variables.f90:108:15: error: CHECK-NEXT: expected string not found in input
# | ! CHECK-NEXT: %[[ZERO_BOX:.*]] = fir.embox %[[PRIV_ARG_BOX]] : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>>
# |               ^
# | <stdin>:58:13: note: scanning from here
# |  fir.if %3 {
# |             ^
# | <stdin>:58:13: note: with "PRIV_ARG_BOX" equal to "1"
# |  fir.if %3 {
# |             ^
# | <stdin>:63:2: note: possible intended match here
# |  %5 = fir.embox %4 : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>>
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\DelayedPrivatization\target-private-multiple-variables.f90
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            53:  %0 = fir.load %arg0 : !fir.ref<!fir.box<!fir.heap<i32>>> 
# |            54:  %1 = fir.box_addr %0 : (!fir.box<!fir.heap<i32>>) -> !fir.heap<i32> 
# |            55:  %2 = fir.convert %1 : (!fir.heap<i32>) -> i64 
# |            56:  %c0_i64 = arith.constant 0 : i64 
# |            57:  %3 = arith.cmpi eq, %2, %c0_i64 : i64 
# |            58:  fir.if %3 { 
# | next:108'0                 X error: no match found
# | next:108'1                   with "PRIV_ARG_BOX" equal to "1"
# |            59:  %4 = fir.embox %1 {allocator_idx = 0 : i32} : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>> 
# | next:108'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            60:  fir.store %4 to %arg1 : !fir.ref<!fir.box<!fir.heap<i32>>> 
# | next:108'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            61:  } else { 
# | next:108'0     ~~~~~~~~~~
# |            62:  %4 = fir.allocmem i32 {bindc_name = "", uniq_name = ""} 
# | next:108'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            63:  %5 = fir.embox %4 : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>> 
# | next:108'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:108'2      ?                                                                 possible intended match
# |            64:  fir.store %5 to %arg1 : !fir.ref<!fir.box<!fir.heap<i32>>> 
# | next:108'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            65:  } 
# | next:108'0     ~~~
# |            66:  omp.yield(%arg1 : !fir.ref<!fir.box<!fir.heap<i32>>>) 
# | next:108'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            67:  } dealloc { 
# | next:108'0     ~~~~~~~~~~~~~
# |            68:  ^bb0(%arg0: !fir.ref<!fir.box<!fir.heap<i32>>>): 
# | next:108'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Flang.Lower/OpenMP/delayed-privatization-allocatable-private.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 3
c:\_work\llvm-project\llvm-project\build\bin\flang.exe -fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization    -o - C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\delayed-privatization-allocatable-private.f90 2>&1 | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\delayed-privatization-allocatable-private.f90
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\flang.exe' -fc1 -emit-hlfir -fopenmp -mmlir --enable-delayed-privatization -o - 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\delayed-privatization-allocatable-private.f90'
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\delayed-privatization-allocatable-private.f90'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\delayed-privatization-allocatable-private.f90:29:15: error: CHECK-NEXT: expected string not found in input
# | ! CHECK-NEXT: %[[ZERO_BOX:.*]] = fir.embox %[[PRIV_ARG_BOX]] : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>>
# |               ^
# | <stdin>:9:13: note: scanning from here
# |  fir.if %3 {
# |             ^
# | <stdin>:9:13: note: with "PRIV_ARG_BOX" equal to "1"
# |  fir.if %3 {
# |             ^
# | <stdin>:14:2: note: possible intended match here
# |  %5 = fir.embox %4 : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>>
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\delayed-privatization-allocatable-private.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" = "w", "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:w-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", llvm.ident = "flang version 23.0.0 (https://github.com/llvm/llvm-project 61eb5c863145212c30d1afdc205790c46f3c9a0a)", llvm.target_triple = "x86_64-pc-windows-msvc", omp.is_gpu = false, omp.is_target_device = false, omp.target_triples = [], omp.version = #omp.version<version = 31>} { 
# |            2:  omp.private {type = private} @_QFdelayed_privatization_allocatableEvar1_private_box_heap_i32 : !fir.box<!fir.heap<i32>> init { 
# |            3:  ^bb0(%arg0: !fir.ref<!fir.box<!fir.heap<i32>>>, %arg1: !fir.ref<!fir.box<!fir.heap<i32>>>): 
# |            4:  %0 = fir.load %arg0 : !fir.ref<!fir.box<!fir.heap<i32>>> 
# |            5:  %1 = fir.box_addr %0 : (!fir.box<!fir.heap<i32>>) -> !fir.heap<i32> 
# |            6:  %2 = fir.convert %1 : (!fir.heap<i32>) -> i64 
# |            7:  %c0_i64 = arith.constant 0 : i64 
# |            8:  %3 = arith.cmpi eq, %2, %c0_i64 : i64 
# |            9:  fir.if %3 { 
# | next:29'0                 X error: no match found
# | next:29'1                   with "PRIV_ARG_BOX" equal to "1"
# |           10:  %4 = fir.embox %1 {allocator_idx = 0 : i32} : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>> 
# | next:29'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           11:  fir.store %4 to %arg1 : !fir.ref<!fir.box<!fir.heap<i32>>> 
# | next:29'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           12:  } else { 
# | next:29'0     ~~~~~~~~~~
# |           13:  %4 = fir.allocmem i32 {bindc_name = "", uniq_name = ""} 
# | next:29'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           14:  %5 = fir.embox %4 : (!fir.heap<i32>) -> !fir.box<!fir.heap<i32>> 
# | next:29'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:29'2      ?                                                                 possible intended match
# |           15:  fir.store %5 to %arg1 : !fir.ref<!fir.box<!fir.heap<i32>>> 
# | next:29'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           16:  } 
# | next:29'0     ~~~
# |           17:  omp.yield(%arg1 : !fir.ref<!fir.box<!fir.heap<i32>>>) 
# | next:29'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           18:  } dealloc { 
# | next:29'0     ~~~~~~~~~~~~~
# |           19:  ^bb0(%arg0: !fir.ref<!fir.box<!fir.heap<i32>>>): 
# | next:29'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Flang.Lower/OpenMP/parallel-private-clause-fixes.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 3
bbc -fopenmp -emit-hlfir C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-fixes.f90 -o -  | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-fixes.f90
# executed command: bbc -fopenmp -emit-hlfir 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-fixes.f90' -o -
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-fixes.f90'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-fixes.f90:15:10: error: CHECK: expected string not found in input
# | ! CHECK: %[[VAL_17:.*]] = fir.embox %[[VAL_6]] typeparams %[[ELESIZE]] : (!fir.heap<!fir.char<1,?>>, index) -> !fir.box<!fir.heap<!fir.char<1,?>>>
# |          ^
# | <stdin>:39:13: note: scanning from here
# |  fir.if %4 {
# |             ^
# | <stdin>:39:13: note: with "VAL_6" equal to "2"
# |  fir.if %4 {
# |             ^
# | <stdin>:39:13: note: with "ELESIZE" equal to "1"
# |  fir.if %4 {
# |             ^
# | <stdin>:44:2: note: possible intended match here
# |  %6 = fir.embox %5 typeparams %1 : (!fir.heap<!fir.char<1,?>>, index) -> !fir.box<!fir.heap<!fir.char<1,?>>>
# |  ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-fixes.f90
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            34:  %1 = fir.box_elesize %0 : (!fir.box<!fir.heap<!fir.char<1,?>>>) -> index 
# |            35:  %2 = fir.box_addr %0 : (!fir.box<!fir.heap<!fir.char<1,?>>>) -> !fir.heap<!fir.char<1,?>> 
# |            36:  %3 = fir.convert %2 : (!fir.heap<!fir.char<1,?>>) -> i64 
# |            37:  %c0_i64 = arith.constant 0 : i64 
# |            38:  %4 = arith.cmpi eq, %3, %c0_i64 : i64 
# |            39:  fir.if %4 { 
# | check:15'0                 X error: no match found
# | check:15'1                   with "VAL_6" equal to "2"
# | check:15'2                   with "ELESIZE" equal to "1"
# |            40:  %5 = fir.embox %2 typeparams %1 {allocator_idx = 0 : i32} : (!fir.heap<!fir.char<1,?>>, index) -> !fir.box<!fir.heap<!fir.char<1,?>>> 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            41:  fir.store %5 to %arg1 : !fir.ref<!fir.box<!fir.heap<!fir.char<1,?>>>> 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            42:  } else { 
# | check:15'0     ~~~~~~~~~~
# |            43:  %5 = fir.allocmem !fir.char<1,?>(%1 : index) {bindc_name = "", uniq_name = ""} 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            44:  %6 = fir.embox %5 typeparams %1 : (!fir.heap<!fir.char<1,?>>, index) -> !fir.box<!fir.heap<!fir.char<1,?>>> 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:15'3      ?                                                                                                            possible intended match
# |            45:  fir.store %6 to %arg1 : !fir.ref<!fir.box<!fir.heap<!fir.char<1,?>>>> 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            46:  } 
# | check:15'0     ~~~
# |            47:  omp.yield(%arg1 : !fir.ref<!fir.box<!fir.heap<!fir.char<1,?>>>>) 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            48:  } dealloc { 
# | check:15'0     ~~~~~~~~~~~~~
# |            49:  ^bb0(%arg0: !fir.ref<!fir.box<!fir.heap<!fir.char<1,?>>>>): 
# | check:15'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

```
</details>
<details>
<summary>Flang.Lower/OpenMP/parallel-private-clause-str.f90</summary>

```
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 4
bbc -fopenmp -emit-hlfir C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-str.f90 -o -  | c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-str.f90
# executed command: bbc -fopenmp -emit-hlfir 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-str.f90' -o -
# note: command had no output on stdout or stderr
# executed command: 'c:\_work\llvm-project\llvm-project\build\bin\filecheck.exe' 'C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-str.f90'
# .---command stderr------------
# | C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-str.f90:18:9: error: CHECK: expected string not found in input
# | !CHECK: omp.private {type = private} @[[STR_ARR_PRIVATIZER:_QFtest_allocatable_string_arrayEc_private_box_heap_Uxc8xU]] : [[TYPE:.*]] init {
# |         ^
# | <stdin>:175:94: note: scanning from here
# |  %5 = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFtest_allocatable_fixed_len_stringEi"}
# |                                                                                              ^
# | 
# | Input file: <stdin>
# | Check file: C:\_work\llvm-project\llvm-project\flang\test\Lower\OpenMP\parallel-private-clause-str.f90
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |           .
# |           .
# |           .
# |         170:  %c42 = arith.constant 42 : index 
# |         171:  %2 = fir.zero_bits !fir.heap<!fir.char<1,42>> 
# |         172:  %3 = fir.embox %2 : (!fir.heap<!fir.char<1,42>>) -> !fir.box<!fir.heap<!fir.char<1,42>>> 
# |         173:  fir.store %3 to %1 : !fir.ref<!fir.box<!fir.heap<!fir.char<1,42>>>> 
# |         174:  %4:2 = hlfir.declare %1 typeparams %c42 {fortran_attrs = #fir.var_attrs<allocatable>, uniq_name = "_QFtest_allocatable_fixed_len_stringEfixed_len_str"} : (!fir.ref<!fir.box<!fir.heap<!fir.char<1,42>>>>, index) -> (!fir.ref<!fir.box<!fir.heap<!fir.char<1,42>>>>, !fir.ref<!fir.box<!fir.heap<!fir.char<1,42>>>>) 
# |         175:  %5 = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFtest_allocatable_fixed_len_stringEi"} 
# | check:18                                                                                                  X error: no match found
# |         176:  %6:2 = hlfir.declare %5 {uniq_name = "_QFtest_allocatable_fixed_len_stringEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>) 
# | check:18     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |         177:  omp.parallel { 
# | check:18     ~~~~~~~~~~~~~~~~
# |         178:  %c1_i32 = arith.constant 1 : i32 
# | check:18     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |         179:  %c10_i32 = arith.constant 10 : i32 
# | check:18     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |         180:  %c1_i32_0 = arith.constant 1 : i32 
# | check:18     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           .
# |           .
# |           .
# | >>>>>>
# `-----------------------------
# 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/186945


More information about the flang-commits mailing list