<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/156466>156466</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [flang][OpenMP] Omitting optional mapper-identifier in declare mapper breaks data mapping
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jfuchs-kmt
      </td>
    </tr>
</table>

<pre>
    I am using the most recent `flang version 22.0.0git (git@github.com:llvm/llvm-project.git 89f53af3fffed3e41167fbb7bc10d4885cd97c7f)`.

The snippet below shows that when omitting the optional mapper-identifier (`custom` in this case), then `real_arr` is not mapped properly from and/or to the device.

```fortran
! flang -O2 -fopenmp -fopenmp-version=52 -fopenmp-targets=nvptx64-nvidia-cuda main.F90 -D_IDENTIFIER_

PROGRAM reproducer
    IMPLICIT NONE

    TYPE :: real_t
        REAL, ALLOCATABLE :: real_arr(:)
    END TYPE real_t
#ifdef _IDENTIFIER_
    !$omp declare mapper(custom: real_t :: t) map(tofrom: t%real_arr)
#else
    !$omp declare mapper(real_t :: t) map(tofrom: t%real_arr)
#endif

    TYPE(real_t) :: r
 ALLOCATE(r%real_arr(10), source=1.0)

    PRINT*, "BEFORE TARGET REGION:"
    PRINT*, "real_arr: ", r%real_arr
    PRINT*, ""

 !$omp target map(tofrom: r)
        r%real_arr = 3.0
    !$omp end target

    PRINT*, "AFTER TARGET REGION:"
    PRINT*, "real_arr: ", r%real_arr

    DEALLOCATE(r%real_arr)
END PROGRAM reproducer
```

1. Compiling the program with `-D_IDENTIFIER_` gives the expected result where `real_arr` contains the values `3.0` after the target region since it is being written to there and mapped back to the host
2. Compiling without the flag gives the bad behavior, where `real_arr` contains the values `1.0` after the target region. Thus the data mapping is not performed properly
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVV1vozoQ_TXOyyjImI-EhzzQhqwitUkV5eU-VQYG8BZsZJt0999fGUj6sd29ulcXVWrwzJyZOYPPcGNELRE3JLoj0XbBB9sovfleDUVjli-dXeSq_LnZA-9gMELWYBuEThkLGguUFkhMq5bLGi6ojVASGPOoR2thgbB1LSwJ3Usz5F6hOhKkbXvpCNu5f8teq-9YWM95r5MqCngVVFWFZYCh78erKs9XeeHTMlyvo6JMVsWqIiwhMfUITQlNzw2CkaLv0UKOrXoF06hXA7bhFl4blKA6Ye21cNVboSRvoeN9j3opSpRWVAK1K5bEtBiMVR2JKQgJthEGCm7QpWT3DkG6fjXy9plrPboZkMpOeCX0WvWo259QadUBlyVhO6XBqjF7iRdR4Fw5ien0VyltNZfuiPkwcbk8MlhWqkfZ9bcfy5lhEmyjN_PScl2jNSTYyktvf8ThUl5EKfiyGEoOHRfS2yUUltvn_TY7nPe7fXZ6nmp4Oh2_ndJH0NhrVQ4FakJTAID949PD_n5_hsPxkE2-7vj811MGJEhJkMJIgp0N7jll6YNjKX14ON6n5_Tu4aOvI4yt3QlL5rDssJ0wb2CEBaIqsYJPxTpvwnzCQtX1UGLRco3zFAlbz2O7lXVNbAlLnBdha6vcTObD6K2iZMqKrcF_zvOf0WUpqo883tAcyJUnZ5_5Gx0-YK19On-IRg26QBJsfY_OOSbgp9P-cCYsdU6EsbtsdzxlcE5P37IznLJv--NhHAD72v-WK0jdqzv9UMKXQROas70RN32Tv3Cj30bvnvfYQIItBB79ZQYoyxnut22mu3N2-j-7nOO22W9n4dpwX--XN-h2tSco34N71fWivapQr1WteQevwjZOTz5dzZhCLS5oRl_80WNhsQSNZmhHTdP4WYQKJS0Xcoq48HZA41wcnTEFXlnUo2kei8baCbURskAQ1mlYjq64Vy2sRTnrlUanYFdpy3nxchWyRhk3Dfa-MdeMGuxor1pev-sh5yXk2PCLUNqx_W968P_YgwfnZphCSm75WKsrZlblHnWldPdOmBflJiiTIOEL3PirKF6zIAnZotmULPIxict8tV4x7q_icJXkmIcVJnnAVtVCbBhlEU0o88Mgocwr1j4WBV35iR9jHlMSUuy4aD232Tyl64UwZsCNH8VhHC9anmNrrntWb8b9lw-1ISFthbHmLc4K244beVwGJNqS6O7Yo3x8ItEWjteF9odlJuQn7YJcI38xH1haDLrdNNb2ZrwtO8J27xb1tKE_LWrCdmNThrDd3Ndlw_4OAAD__3cIinM">