summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Driver/ToolChains.cpp9
-rw-r--r--clang/lib/Driver/ToolChains.h2
-rw-r--r--clang/test/Driver/cuda-no-sanitizers.cu1
3 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index 512bebd3f0c..d03e0cbd8ae 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -4973,6 +4973,15 @@ void CudaToolChain::AddIAMCUIncludeArgs(const ArgList &Args,
HostTC.AddIAMCUIncludeArgs(Args, CC1Args);
}
+SanitizerMask CudaToolChain::getSupportedSanitizers() const {
+ // The CudaToolChain only supports address sanitization in the sense that it
+ // allows ASAN arguments on the command line. It must not error out on these
+ // command line arguments because the host code compilation supports them.
+ // However, it doesn't actually do any address sanitization for device code;
+ // instead, it just ignores any ASAN command line arguments it sees.
+ return SanitizerKind::Address;
+}
+
/// XCore tool chain
XCoreToolChain::XCoreToolChain(const Driver &D, const llvm::Triple &Triple,
const ArgList &Args)
diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h
index 35543cdb94b..1c1ee21c6d6 100644
--- a/clang/lib/Driver/ToolChains.h
+++ b/clang/lib/Driver/ToolChains.h
@@ -912,6 +912,8 @@ public:
void AddIAMCUIncludeArgs(const llvm::opt::ArgList &DriverArgs,
llvm::opt::ArgStringList &CC1Args) const override;
+ SanitizerMask getSupportedSanitizers() const override;
+
const ToolChain &HostTC;
CudaInstallationDetector CudaInstallation;
diff --git a/clang/test/Driver/cuda-no-sanitizers.cu b/clang/test/Driver/cuda-no-sanitizers.cu
index e344f9043ab..4c01bbdab0f 100644
--- a/clang/test/Driver/cuda-no-sanitizers.cu
+++ b/clang/test/Driver/cuda-no-sanitizers.cu
@@ -6,6 +6,7 @@
// RUN: %clang -### -target x86_64-linux-gnu -c --cuda-gpu-arch=sm_20 -fsanitize=address %s 2>&1 | \
// RUN: FileCheck %s
+// CHECK-NOT: error:
// CHECK-DAG: "-fcuda-is-device"
// CHECK-NOT: "-fsanitize=address"
// CHECK-DAG: "-triple" "x86_64--linux-gnu"
OpenPOWER on IntegriCloud