================
@@ -1014,17 +1014,20 @@ RocmInstallationDetector::getCommonBitcodeLibs(
     bool isOpenMP = false) const {
   llvm::SmallVector<ToolChain::BitCodeLibraryInfo, 12> BCLibs;
 
-  auto GPUSanEnabled = [GPUSan]() { return std::get<bool>(GPUSan); };
+  // GPU Sanitizer currently only supports ASan and is enabled through host
+  // ASan.
+  auto GPUSanEnabled = [GPUSan]() {
+    return std::get<bool>(GPUSan) &&
+           std::get<const SanitizerArgs>(GPUSan).needsAsanRt();
+  };
----------------
ampandey-1995 wrote:

> Why is this using a lambda and capture for a simple and?
If we have other sanitizers apart from asan such as msan for GPU. Then , what I 
think we would be having another msanrtl.bc linked so that future code would be 
something like below for easy readability and maintainability purpose. Note: we 
cannot enable both ASan and MSan simultaneously at compile time.  

```
auto GPUSanEnabled = [GPUSan](){
auto SanArgs = std::get<const SanitizerArgs>(GPUSan);
return std::get<bool>(GPUSan) &&
           (SanArgs.needsAsanRt() || SanArgs.needsMsanRt()) ;
};
```

> I'm also surprised `get<bool>` works instead of `get<0>`
Yes, since the  tuple contents are of unique types it works. Should I change it?







https://github.com/llvm/llvm-project/pull/126671
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to