[flang-commits] [flang] [Flang][OpenMP] Stop emitting implicit mappers for allocatable derived types (and arrays of them) unconditionally (PR #216184)
via flang-commits
flang-commits at lists.llvm.org
Wed Aug 19 21:15:05 PDT 2026
github-actions[bot] wrote:
<!--PREMERGE ADVISOR COMMENT: Linux-->
# :penguin: Linux x64 Test Results
* 4788 tests passed
* 137 tests skipped
* 1 test failed
## Failed Tests
(click on a test name to see its output)
### Flang
<details>
<summary>Flang.Lower/OpenMP/default-mapper-iso-c-nested.f90</summary>
```
Exit Code: 1
Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -fintrinsic-modules-path=/home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/24/finclude/flang/x86_64-unknown-linux-gnu -emit-hlfir -fopenmp -fopenmp-version=50 /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/default-mapper-iso-c-nested.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/default-mapper-iso-c-nested.f90
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/flang -fc1 -fintrinsic-modules-path=/home/gha/actions-runner/_work/llvm-project/llvm-project/build/lib/clang/24/finclude/flang/x86_64-unknown-linux-gnu -emit-hlfir -fopenmp -fopenmp-version=50 /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/default-mapper-iso-c-nested.f90 -o -
# .---command stderr------------
# | warning: OpenMP support for version 50 in flang is still incomplete [-Wexperimental-option]
# `-----------------------------
# 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/default-mapper-iso-c-nested.f90
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/default-mapper-iso-c-nested.f90:38:10: error: CHECK: expected string not found in input
# | ! CHECK: omp.map.info {{.*}}map_clauses(implicit, tofrom){{.*}}mapper(@_QM__fortran_builtinsT__builtin_c_ptr_omp_default_mapper){{.*}}{name = ""}
# | ^
# | <stdin>:20:50: note: scanning from here
# | omp.declare_mapper @_QQFdtype_omp_default_mapper : !fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}> {
# | ^
# | <stdin>:28:159: note: possible intended match here
# | %6 = omp.map.info var_ptr(%5 : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>) map_clauses(implicit, tofrom) capture(ByRef) mapper(@_QM__fortran_builtinsT__builtin_c_ptr_omp_default_mapper) name("") -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/default-mapper-iso-c-nested.f90:45:10: error: CHECK: expected string not found in input
# | ! CHECK: %[[P_MAP:.*]] = omp.map.info var_ptr(%{{.*}}){{.*}}map_clauses(tofrom){{.*}}mapper(@_QQM__fortran_builtinsc_ptr_omp_default_mapper){{.*}}{name = "p"}
# | ^
# | <stdin>:109:31: note: scanning from here
# | func.func @_QPmap_cptr_direct() {
# | ^
# | <stdin>:109:31: note: pattern attempts to capture variables: "P_MAP"
# | func.func @_QPmap_cptr_direct() {
# | ^
# |
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/flang/test/Lower/OpenMP/default-mapper-iso-c-nested.f90
# |
# | -dump-input=help explains the following input dump.
# |
# | Input was:
# | <<<<<<
# | .
# | .
# | .
# | 15: %2 = fir.coordinate_of %0#0, __address : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) -> !fir.ref<i64>
# | 16: %3 = omp.map.info var_ptr(%2 : !fir.ref<i64>, i64) map_clauses(implicit, tofrom) capture(ByRef) name("") -> !fir.ref<i64>
# | 17: %4 = omp.map.info var_ptr(%0#1 : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>) map_clauses(implicit) capture(ByRef) members(%3 : [0] : !fir.ref<i64>) name("") partial_map(true) -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>
# | 18: omp.declare_mapper.info map_entries(%4, %3 : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.ref<i64>)
# | 19: }
# | 20: omp.declare_mapper @_QQFdtype_omp_default_mapper : !fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}> {
# | check:38'0 { search range start (exclusive)
# | check:38'1 error: no match found in search range
# | 21: ^bb0(%arg0: !fir.ref<!fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>):
# | 22: %0:2 = hlfir.declare %arg0 {uniq_name = ""} : (!fir.ref<!fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>) -> (!fir.ref<!fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>, !fir.ref<!fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>)
# | 23: %1 = fir.field_index id, !fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>
# | 24: %2 = fir.coordinate_of %0#0, id : (!fir.ref<!fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>) -> !fir.ref<i32>
# | 25: %3 = omp.map.info var_ptr(%2 : !fir.ref<i32>, i32) map_clauses(implicit, tofrom) capture(ByRef) name("") -> !fir.ref<i32>
# | 26: %4 = fir.field_index ptr, !fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>
# | 27: %5 = fir.coordinate_of %0#0, ptr : (!fir.ref<!fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>) -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>
# | 28: %6 = omp.map.info var_ptr(%5 : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>) map_clauses(implicit, tofrom) capture(ByRef) mapper(@_QM__fortran_builtinsT__builtin_c_ptr_omp_default_mapper) name("") -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>
# | check:38'2 ? possible intended match
# | 29: %7 = omp.map.info var_ptr(%0#1 : !fir.ref<!fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>, !fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>) map_clauses(implicit) capture(ByRef) members(%3, %6 : [0], [1] : !fir.ref<i32>, !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) name("") partial_map(true) -> !fir.ref<!fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>
# | 30: omp.declare_mapper.info map_entries(%7, %3, %6 : !fir.ref<!fir.type<_QFTdtype{id:i32,ptr:!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>}>>, !fir.ref<i32>, !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>)
# | 31: }
# | 32: func.func @_QQmain() attributes {fir.bindc_name = "TEST_ISO_C_NESTED_MAPPER"} {
# | 33: %0 = fir.dummy_scope : !fir.dscope
# | .
# | .
# | .
# | 104: hlfir.assign %c1_i32 to %46 : i32, !fir.ref<i32>
# | 105: omp.terminator
# | 106: }
# | 107: return
# | 108: }
# | 109: func.func @_QPmap_cptr_direct() {
# | check:38'3 } search range end (exclusive)
# | check:45'0 { search range start (exclusive)
# | check:45'1 error: no match found in search range
# | check:45'2 pattern attempts to capture variables: "P_MAP"
# | 110: %0 = fir.dummy_scope : !fir.dscope
# | 111: %1 = fir.alloca !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}> {bindc_name = "p", uniq_name = "_QFmap_cptr_directEp"}
# | 112: %2:2 = hlfir.declare %1 {uniq_name = "_QFmap_cptr_directEp"} : (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) -> (!fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>)
# | 113: %3 = omp.map.info var_ptr(%2#1 : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>, !fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>) map_clauses(tofrom) capture(ByRef) mapper(@_QQM__fortran_builtinsc_ptr_omp_default_mapper) name("p") -> !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>
# | 114: omp.target kernel_type(generic) map_entries(%3 -> %arg0 : !fir.ref<!fir.type<_QM__fortran_builtinsT__builtin_c_ptr{__address:i64}>>) {
# | .
# | .
# | .
# | 656: fir.call @_QQmain() fastmath<contract> : () -> ()
# | 657: %c0_i32 = arith.constant 0 : i32
# | 658: fir.call @_FortranAProgramEndStatement() fastmath<contract> : () -> ()
# | 659: return %c0_i32 : i32
# | 660: }
# | 661: }
# | check:45'3 } search range end (exclusive)
# | >>>>>>
# `-----------------------------
# 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/216184
More information about the flang-commits
mailing list