[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