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

    <tr>
        <th>Summary</th>
        <td>
            [OpenMP] Fails to compile with ClangARM64
        </td>
    </tr>

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

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

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

<pre>
    When attempting to compile  [mingw-w64-openmp](https://packages.msys2.org/base/mingw-w64-openmp) for clangarm64 in MSYS2, the link stage fails to find several symbols:
```
[34/35] Building CXX object runtime/src/CMakeFiles/omp.dir/kmp_taskdeps.cpp.obj
clang++: warning: argument unused during compilation: '-mrtm' [-Wunused-command-line-argument]
[35/35] Linking C shared library runtime\src\libomp.dll
FAILED: runtime/src/libomp.dll runtime/src/libomp.dll.a
cmd.exe /C "cd . && C:\msys64\clangarm64\bin\clang.exe -O2 -pipe -Wall -Wcast-qual -Wformat-pedantic -Wimplicit-fallthrough -Wsign-compare -Wno-extra -Wno-pedantic -O3 -DNDEBUG  -pipe  C:/Dev/MINGW-packages/mingw-w64-openmp/src/build-CLANGARM64-shared/runtime/src/libomp.def -shared -o runtime\src\libomp.dll -Wl,--out-implib,runtime\src\libomp.dll.a -Wl,--major-image-version,5,--minor-image-version,0 runtime/src/CMakeFiles/omp.dir/kmp_alloc.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_atomic.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_csupport.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_debug.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_itt.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_environment.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_error.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_global.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_i18n.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_io.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_runtime.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_settings.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_str.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_tasking.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_threadprivate.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_utility.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_barrier.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_wait_release.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_affinity.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_dispatch.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_lock.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_sched.cpp.obj runtime/src/CMakeFiles/omp.dir/z_Windows_NT_util.cpp.obj runtime/src/CMakeFiles/omp.dir/z_Windows_NT-586_util.cpp.obj runtime/src/CMakeFiles/omp.dir/thirdparty/ittnotify/ittnotify_static.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_taskdeps.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_cancel.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_ftn_cdecl.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_ftn_extra.cpp.obj runtime/src/CMakeFiles/omp.dir/kmp_version.cpp.obj runtime/src/CMakeFiles/omp.dir/libomp.rc.obj  -lpthread -lpsapi  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_10
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_20
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_bool_1_cas
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_bool_1_cas_cpt
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_bool_2_cas
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_bool_2_cas_cpt
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_bool_4_cas
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_bool_4_cas_cpt
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_bool_8_cas
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_bool_8_cas_cpt
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_cmplx10_add
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_cmplx10_div
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_cmplx10_mul
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_cmplx10_sub
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_float10_add
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_float10_div
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_float10_max
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_float10_max_cpt
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_float10_min
ld.lld: error: <root>: undefined symbol: __kmpc_atomic_float10_min_cpt
ld.lld: error: too many errors emitted, stopping now (use /errorlimit:0 to see all errors)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().
```

These missing symbols seems to be coming from this change: https://github.com/llvm/llvm-project/commit/c1988dbf2d191d771e3a396eaa6396500965787d

- Is this perhaps fixed in 14.0.6. The MSYS2 repository only has 14.0.4
- https://reviews.llvm.org/D117473 changed the .cpp file, but left the header intact. So many of those symbols are declared but not implemented. Shouldn't they also be removed from ARM64 configurations in the header and in the .def file?

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1WFlv2zgQ_jX2CyFBh88HPzh2UhRokkXSRbpPBiWOLDYUqSUpO95fv0NKytFtC0TrAILEY45vhkNyNJlip9VDCZJQa6GqLZd7YhXJVVVzAYSMphcVjh2D42wSqBpkVY-m21GyKK2tzShdj5IrfGqaP9I9mLAyJ5OESu9xMKMG8PMf_mRJCqVJLqjcU13NJoRLcn3_130ySjbElkAEl4_EWJRICsqFcZAKLhkxcABNBTGnKlPC64-2o2g9mkXd03anF-kEVadTBEsuGi6YM2zz7RtR2XfILdGNtLxy8IzO8b25po9whSYb7KDxIeMaW49VvbPUPDKoTZjXdYjsrQqPfpRcuCddkyPVElW4JtX7pgJpSSMbA4ywRjvlrUup5Uo6qlEyDyptK_w6JwcPLXWAZBWVLEAXQNCLci5_Nmz6bNgXdJO3i5iSalQleKapPj1bN90466YbHPc2CdGKuVp__nK5dTB-9MML5W-mQtr5oGIhPAFx_sNXkjMS4neGD9m4tZluXDzMJth4WW3sZFz2Q15AcJuQoOY1th4oqg4ecmps8HdDXRuDpaI2qIFRRJTjCK9qwXNugwKpbalVsy9x2PC9dA6s0RnYlSqAJ6tp23xhv01JsL3ZXl78-Yl0alu4ydUWDvi-_nzz6SHoY_qnIdz5JHOhFWy-rG8-re-ucb5dCJz5lfegIB0RCdRvFgpBC9wOQaAaG3h7M-z-mj6kzxwV_a408iD4ALeLcRGXbKbtHJc_mYvesx_Q5SrvN8O7GK2q-CDO3DR1rbQdwssga_ZDGLkdpA_kgWsl3bYdxK610kMY90JlVAwyNF7IQXxqCFdHOoTVgHUXlBnEawd51R3-qHIQa6mBslrzA7WDzG0sF9yehrBmVGsOgyw-Um53GgTg7T1olxd4Uw-Ezbipqc3LIbx4KD0OCoy8BPZexn92D5iOqKPZ3Xz16_R_BATTxWyQEFtyzfCysyfs4HElleXFmzaGPWYcg87cH9Oed53XVOYw6CwqrNzlDPLBzP7GH8Lc3YbvZe1uYJ17JhKIut33rmVozd3QI2gJIsUcR2COp31jz7j_Hrk0tVJ43wtTgmiplID-SxvbMjbcycTshom9H6HsgPKx2WVcLvvCJKxNzQQLhWAuw_MXis84041Wyo7SS9drJKYimGOyLpd2Y7sdOiLv7uldHJ1NVHI-URn6ahdjhJkPELnLa3tescn5kSYfg3RyfqSTj0G6OD_SxdmR5piyP8XRjjJ2dpmMH84us2rE2WWaJjubzEIoas_sz17mOf3Zy6zo00fIPGuMPsvF3_EPkPlbrFYpUlF5akcMgQqTFvfnvCHGqrp2dQ2pjni5LfDOdCUGTyg40iF_5EpCBoC4ckErYpQsX5dmXitz9STQpKut-JoSmnDktiTwxC1OMCBxrys49MK5PKi8Ldn0wiWX36mT6X_9W6zgTcNof6sg7Go26dY_l-Ty7u72zpGuPUWjgag8b7QrBnDZSkQMqCv8eVnLv7-WgCArbozzUVcJc3ArXyfLwNnppgqtKoI5oiF5iR4Bp_lt2W6PHmiyEOldJiMO_SeotXJlMuw6k7hvxMvFgmVFwuJlzObzGFKaLmdA6Qw_0yjC13wxZ6-hBuSzaRHUoEtaG1Lwp9bYeBJG4SwkaE1b-yMaamW4VfpElBQnUlLTUk16YW_BazhwOJrQAe4qjts4nk_maWcv87VEl9ChWgEutLLGEgGF9TMlpmkYFVxamtuQ3HcBqQqcVeji3rWumuRSUl-0cRIwtyauJAPuJx_XmdyXqhEMg2TuJZ8wKo1fCQ2VOiCXXwpfIcLFkQXfN9qHlXGueIXFBU834ktFHnd61TpgzFYpW6ZLOrbcCliNphe3NcjrP1wt8Kqvk_alWx_dG7cVvN5xo8Xq3auPQdb4hHc6SyfLcbmKZimd0GkWR_NkUgBLk_lsnmMzXSBJPh8LmoEwDhuiGvNVEiVJNI-SaBmn8SKczWGWxlk0SSZsnqTRaBJBhdCfV3GsVx5D1uwNTgpu7MsSj6lxNT6AXj5mx6XSq7LCnyA8lv5ZJGMPeeXx_gv7bKn5">