[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