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

    <tr>
        <th>Summary</th>
        <td>
            Failed to load globals when offloading to AMDGPU
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          jhuber6
      </td>
    </tr>
</table>

<pre>
    The Thermo4FPM application currently fails to run because of an error in the AMDGPU where it fails to load a global.  The flags used to configure the project are as follows.

```
cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DWITH_OPENMP_OFFLOAD=ON -DCMAKE_CXX_FLAGS="-fopenmp -fopenmp-cuda-mode -fopenmp-new-driver -fopenmp-targets=amdgcn -Rpass=openmp-opt -Rpass-missed=openmp-opt" -DWITH_OPENMP_OFFLOAD=ON && make -j && ctest ./
```
And one of the tests fails with the following error message.

```
Libomptarget --> Unable to generate entries table for device id 0.
Libomptarget --> Failed to init globals on device 0
Libomptarget error: Consult https://openmp.llvm.org/design/Runtimes.html for debugging options.
testLoopCALPHADbinaryEquilibrium.cc:106:1: Libomptarget fatal error 1: failure of target construct while offloading is mandatory
```
Looking at the debugging information we get the following information about the globals,
```
Libomptarget --> Device 0 is ready to use.
Target AMDGPU RTL --> Arg[0] "" (8, 0)
Target AMDGPU RTL --> Arg[1] "" (8, 8)
Target AMDGPU RTL --> Arg[2] "" (8, 16)
Target AMDGPU RTL --> Arg[3] "" (8, 24)
Target AMDGPU RTL --> Arg[4] "" (8, 32)
Target AMDGPU RTL --> Arg[5] "" (8, 40)
Target AMDGPU RTL --> [__omp_offloading_2f_1253762c__ZL29____C_A_T_C_H____T_E_S_T____0v_l106: kernarg seg size] (48 --> 48)
Target AMDGPU RTL --> Modules loaded successful? 1
Target AMDGPU RTL --> Exec Symbol type: 0
Target AMDGPU RTL --> Symbol omptarget_device_environment = 0x7f2aae6f8738 (16 bytes)
Target AMDGPU RTL --> Exec Symbol type: 0
Target AMDGPU RTL --> Symbol __omp_offloading_2f_1253762c__ZL29____C_A_T_C_H____T_E_S_T____0v_l106_exec_mode = 0x7f2aae605480 (1 bytes)
Target AMDGPU RTL --> Exec Symbol type: 1
Target AMDGPU RTL --> Kernel __omp_offloading_2f_1253762c__ZL29____C_A_T_C_H____T_E_S_T____0v_l106 --> 7f2aae605440 symbol 10032 group segsize 0 pvt segsize 48 bytes kernarg
Target AMDGPU RTL --> "Module registering" succeeded
Target AMDGPU RTL --> Setting global device environment after load (16 bytes)
Target AMDGPU RTL --> AMDGPU module successfully loaded!
Target AMDGPU RTL --> No device_state symbol found, skipping initialization
Target AMDGPU RTL --> to find the kernel name: __omp_offloading_2f_1253762c__ZL29____C_A_T_C_H____T_E_S_T____0v_l106 size: 69
Target AMDGPU RTL --> Warning: Loading KernDesc '__omp_offloading_2f_1253762c__ZL29____C_A_T_C_H____T_E_S_T____0v_l106_kern_desc' - symbol not found, Target AMDGPU RTL --> Warning: Loading WGSize '__omp_offloading_2f_1253762c__ZL29____C_A_T_C_H____T_E_S_T____0v_l106_wg_size' - symbol not found, using default value 256
Target AMDGPU RTL --> "Loading WGSize computation property" failed
Target AMDGPU RTL --> After loading global for __omp_offloading_2f_1253762c__ZL29____C_A_T_C_H____T_E_S_T____0v_l106_exec_mode ExecMode = 2
Target AMDGPU RTL --> "Loading computation property" succeeded
Target AMDGPU RTL --> Construct kernelinfo: ExecMode 2
Target AMDGPU RTL --> Entry point 0 maps to __omp_offloading_2f_1253762c__ZL29____C_A_T_C_H____T_E_S_T____0v_l106
Target AMDGPU RTL --> Loading global '_ZN10Thermo4PFML11fun_ptr_arrE' (Failed)
```
This was run using clang 15.0 on a GFX908 GPU.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytV9uS2jgQ_Rp4UUHZMtcHHgiXSWphhpohlWxeXLItG2VkySvJEPL127IMDCkykF0oxoMsdau7z-lWK5LJfrTeUAR_Kped-WqJSFFwFhPDpEBxqRQVhu9RShjXyEikSoEiGpNSUyRTRASiSkmFmEAGFI2X04fVZ7QDfRQxc5LjkiSIoIzLiPA2sjuilJNMI9CU2BWxFCnLSpCzigolv9PYIAJjolEqOZc73W5404Y3rp89r_5WwzgnrxS1ppPl-K9ZOPn6NZw8LVefFrPnRjCNORFZA3-A73HJh8-fFtNw_fdqBgueKadEW_kvn9Yfw6fV7HG5Cp_m88XTeArzT49nqueL8cMLvG5g3EplQUVeoMOPVlwmpJXLhJ5eCbprJYptqTq9M0Rl1GjQQvIkiwVqPRdE23G9QBamftfKmYYwnU3B1u9Z28A9-CIXlO-HYWyoNqjdwPOLMRyLBElRIWtBsIt1jeGOmU310kHBRFYjn1OtSUbfg2bBIpkXzl_UajWCGfosSMSpxT2jgipiKAKmKUaBLdVMCqoTumUx8ChBXvu3muZgnmMQE8A4xzANbhzELxlRmd4IxmgihS65QRtjCgj92EYGz12U25xv87ZUQJx5QjXLBPx4LoVh4HN7Y3JeWxmVWWYDAqhA2hxYaqO3kLKYjBerj-NpxARR-9k_JeMsUqzM23EMG_pezz6tLWcWpsQQXoe4mrUw2Oyw2LglkDHaqBKyZLeBGMBMatPMWsI0IC8SYqTaX4ZEyle7kJgK1JMPTIBPucv_HUV2n3PU3y4gkSzdfB32Bp7cyoBpjY61VVGS7C2EUAzq6K3d2rqgPK8XtdgY4Oh-8BrdKXAa2yRo4MEA9gWc8fAWWf-C7OBGWXxB1u_dKBxcEMadG4U7F4QDfKNw94Jw53q8QDIMAbfwxKwQp6GPu0G_h-Mw_LbAwxA-k3AcruH50Q7W4Sx8gSd8vG3IHcHRK1XA_wxpCn_sJ3UWDTqDeq_OdQiWMik5FAhrCmS8LuMYak9a8kYwhxx5V3b2g8boZZ9HkiOzL6g1yXtfpF595G3o6klIxZYpKXKoVwhqLfJ-9FNMCO2lg34wsE75PRTtIf2vevTfrboLLiGF_cPqpDpzxOt2Bl7lyP_w4wogfwEf6J38qFWerO94SDtrfM8LMMqULAtLPcs8KDnF1hxHwMDKyQNDr6QExo6GULMypg1VzDYW2LGRAi-vwEeNsVXU1cvDEfWWUiQFpa5f-hMq1S9yZ9wpN6B5c_nSwFcQeZS1OaE29jyuI5jKUiS2YOhXVhTuBGCGEc5-VofA-0qhpqcMugp7Rrw6yAXJK4LcB_qqloC23pX4fCFKWKjsOVsfkpaCU6pjiHP_PvlkPYQyoWPQiFqHCAppTlH8A_u-PLxYgt7Nul0WVtH6rW2lttsmNCW2JdoSXlKEu72rGfGLwTEYWxrXIUAfX1Bl9jZF0qpTu0LjI_vfZIntsu5d8GzJWh4qH77Zxd_5dmP6T44tm0sG20xZyI_WXLFkBj3yHhWSQaHwoMUrqsvVfQ7pdzdenCNiOfnt0ffqi-Nqvlz4flqKsDAqJErNLMmgfLnm_Fi8fukK1xvo_XZwvbO3Ske-6qKG_G7bsx08QQ_zr0NvgMCYdjMZBckwGJKmYYbT0anxr4rlofGHu6d42wrDvPOmWSo-Ou_zM7jUlFEbQIWB7fbrf636-glDuHiVtvzOu53AGzY3o9gPhl3aJ13seT7txMMUDp0Ak0GUDNMER01OIsr1CJonIIa7SdjWqzttshH2MPZAj9_v-rjf7va9YS-iuD_0h2kPOrKOR3Nw63jzaKpRZQ905xomOZw4-jQJN0O4lFBa7QX6SWk2Uo2-g09U9ZqV6aPK7n8BMrT6VQ">