r281680 - [CUDA] Don't try to run sanitizers on NVPTX.
Justin Lebar via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 15 16:44:13 PDT 2016
Author: jlebar
Date: Thu Sep 15 18:44:13 2016
New Revision: 281680
URL: http://llvm.org/viewvc/llvm-project?rev=281680&view=rev
Log:
[CUDA] Don't try to run sanitizers on NVPTX.
Summary:
Sanitizers aren't supported on NVPTX -- don't try to run them.
This lets you e.g. pass -fsanitize=address and get asan on your host
code.
Reviewers: kcc
Subscribers: cfe-commits, tra, jhen
Differential Revision: https://reviews.llvm.org/D24640
Added:
cfe/trunk/test/Driver/cuda-no-sanitizers.cu
Modified:
cfe/trunk/lib/Driver/SanitizerArgs.cpp
Modified: cfe/trunk/lib/Driver/SanitizerArgs.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/SanitizerArgs.cpp?rev=281680&r1=281679&r2=281680&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/SanitizerArgs.cpp (original)
+++ cfe/trunk/lib/Driver/SanitizerArgs.cpp Thu Sep 15 18:44:13 2016
@@ -608,6 +608,12 @@ static void addIncludeLinkerOption(const
void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs,
types::ID InputType) const {
+ // NVPTX doesn't currently support sanitizers. Bailing out here means that
+ // e.g. -fsanitize=address applies only to host code, which is what we want
+ // for now.
+ if (TC.getTriple().isNVPTX())
+ return;
+
// Translate available CoverageFeatures to corresponding clang-cc1 flags.
// Do it even if Sanitizers.empty() since some forms of coverage don't require
// sanitizers.
Added: cfe/trunk/test/Driver/cuda-no-sanitizers.cu
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cuda-no-sanitizers.cu?rev=281680&view=auto
==============================================================================
--- cfe/trunk/test/Driver/cuda-no-sanitizers.cu (added)
+++ cfe/trunk/test/Driver/cuda-no-sanitizers.cu Thu Sep 15 18:44:13 2016
@@ -0,0 +1,12 @@
+// Check that -fsanitize=foo doesn't get passed down to device-side
+// compilation.
+//
+// REQUIRES: clang-driver
+//
+// RUN: %clang -### -target x86_64-linux-gnu -c --cuda-gpu-arch=sm_20 -fsanitize=address %s 2>&1 | \
+// RUN: FileCheck %s
+
+// CHECK-DAG: "-fcuda-is-device"
+// CHECK-NOT: "-fsanitize=address"
+// CHECK-DAG: "-triple" "x86_64--linux-gnu"
+// CHECK: "-fsanitize=address"
More information about the cfe-commits
mailing list