[libcxx-commits] [libcxx] [libc++] Encode additional ODR-affecting properties in the ABI tag (PR #69669)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Oct 31 14:01:26 PDT 2023
ldionne wrote:
> Hi @ldionne
>
> This change breaks OpenMP offloading on my machine. I traced it back to this commit with git bisect. If I compile simple tests programs with OpenMP offloading enabled, I get runtime errors like
>
> ```
> "PluginInterface" error: Failure to load binary image 0x555555892c30 on device 0: Error in hsa_executable_get_symbol_by_name(__omp_offloading_16_cff8cf6__ZNSt3__122__omp_transform_reduceB8se180000IPdS1_ldvZ4mainE3$_0EET2_T_T0_T1_S3_NS_4plusIT3_EET4__l87.kd): HSA_STATUS_ERROR_INVALID_SYMBOL_NAME: There is no symbol with the given name.
> [...]
> ```
>
> and I did not get any from the previous commit in the log.
>
> I am not trying to ask you to revert this commit, but could you please help me understand what side effects this commit could have?
If I had to guess, I would say there's some kind of mismatch between whether exceptions or hardening is enabled or not when you compile a function. I don't know how OpenMP offloading works, but if the compiler compiled the device code with e.g. exceptions disabled and then tried to find that function from a TU where exceptions are enabled, it could be that there's a mismatch between the mangled name the compiler expects to find and the actual mangled name that was generated for the device.
https://github.com/llvm/llvm-project/pull/69669
More information about the libcxx-commits
mailing list