[clang] Reapply "[Driver][ROCm][OpenMP] Fix default ockl linking for OpenMP."… (PR #126671)
Amit Kumar Pandey via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 11 08:05:12 PST 2025
================
@@ -68,7 +68,9 @@ llvm::opt::DerivedArgList *AMDGPUOpenMPToolChain::TranslateArgs(
Action::OffloadKind DeviceOffloadKind) const {
DerivedArgList *DAL =
HostTC.TranslateArgs(Args, BoundArch, DeviceOffloadKind);
- if (!DAL || Args.hasArg(options::OPT_fsanitize_EQ))
+ // Skip sanitize options passed from the HostTC. The decision to instrument
+ // device code is computed only by 'shouldSkipSanitizeOption'.
+ if (!DAL && DAL->hasArg(options::OPT_fsanitize_EQ))
----------------
ampandey-1995 wrote:
Sorry, actually here the DAL computed from the HostTC picks up the sanitize option like ```-fsanitize=address``` and pass forward to ```DAL``` of device toolchain. The ```shouldSkipSanitizeOption ``` runs over each argument of ```Args [The user provided arguments which are not derived]``` and checks if the ```-fsanitize=address``` is there it early returns false which then avoids checking the :xnack+ capability.
So, assume the case where when we pass ```-fsanitize=address --offload-arch=gfx90a``` . This should avoid appending ```-fsanitize=address``` in the DAL for device toolchain but it dosen't since the DAL already has -fsanitize=address from host toolchain and due to early return from ```shouldSkipSanitizeOption``` where it checks for the ```:xnack+``` capability is skipped.
https://github.com/llvm/llvm-project/pull/126671
More information about the cfe-commits
mailing list