r272857 - [CUDA] Don't pass top-level -march down to device cc1 or ptxas.
Justin Lebar via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 15 16:46:11 PDT 2016
Author: jlebar
Date: Wed Jun 15 18:46:11 2016
New Revision: 272857
URL: http://llvm.org/viewvc/llvm-project?rev=272857&view=rev
Log:
[CUDA] Don't pass top-level -march down to device cc1 or ptxas.
Summary:
Previously if you did e.g.
$ clang -march=haswell -x cuda foo.cu
we would pass "-march=haswell -march=sm_20" down to the ptxas tool.
This causes it to assert, and rightly so!
Reviewers: tra
Subscribers: cfe-commits, echristo
Differential Revision: http://reviews.llvm.org/D21419
Added:
cfe/trunk/test/Driver/cuda-march.cu
Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=272857&r1=272856&r2=272857&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Wed Jun 15 18:46:11 2016
@@ -4676,8 +4676,10 @@ CudaToolChain::TranslateArgs(const llvm:
DAL->append(A);
}
- if (BoundArch)
+ if (BoundArch) {
+ DAL->eraseArg(options::OPT_march_EQ);
DAL->AddJoinedArg(nullptr, Opts.getOption(options::OPT_march_EQ), BoundArch);
+ }
return DAL;
}
Added: cfe/trunk/test/Driver/cuda-march.cu
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cuda-march.cu?rev=272857&view=auto
==============================================================================
--- cfe/trunk/test/Driver/cuda-march.cu (added)
+++ cfe/trunk/test/Driver/cuda-march.cu Wed Jun 15 18:46:11 2016
@@ -0,0 +1,24 @@
+// Checks that cuda compilation does the right thing when passed -march.
+// (Specifically, we want to pass it to host compilation, but not to device
+// compilation or ptxas!)
+//
+// REQUIRES: clang-driver
+// REQUIRES: x86-registered-target
+// REQUIRES: nvptx-registered-target
+
+// RUN: %clang -### -target x86_64-linux-gnu -c -march=haswell %s 2>&1 | FileCheck %s
+
+// RUN: %clang -### -target x86_64-linux-gnu -c -march=haswell --cuda-gpu-arch=sm_20 %s 2>&1 | \
+// RUN: FileCheck %s
+
+// CHECK:clang
+// CHECK: "-cc1"
+// CHECK-SAME: "-triple" "nvptx
+// CHECK-SAME: "-target-cpu" "sm_20"
+
+// CHECK: ptxas
+// CHECK-SAME: "--gpu-name" "sm_20"
+
+// CHECK:clang
+// CHECK-SAME: "-cc1"
+// CHECK-SAME: "-target-cpu" "haswell"
More information about the cfe-commits
mailing list