[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