From: Justin Lebar Date: Tue, 19 Apr 2016 02:27:11 +0000 (+0000) Subject: [CUDA] Add --no-cuda-noopt-debug, which disables --cuda-noopt-debug. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52a9fbe3d8fdd8cb22ef6d23c1b92b5e83abba29;p=clang [CUDA] Add --no-cuda-noopt-debug, which disables --cuda-noopt-debug. Reviewers: tra Subscribers: cfe-commits, jhen Differential Revision: http://reviews.llvm.org/D19251 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266708 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 9c625a0cff..946f29dec3 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -386,6 +386,7 @@ def cuda_gpu_arch_EQ : Joined<["--"], "cuda-gpu-arch=">, Flags<[DriverOption]>, HelpText<"CUDA GPU architecture (e.g. sm_35). May be specified more than once.">; def cuda_noopt_device_debug : Flag<["--"], "cuda-noopt-device-debug">, HelpText<"Enable device-side debug info generation. Disables ptxas optimizations.">; +def no_cuda_noopt_device_debug : Flag<["--"], "no-cuda-noopt-device-debug">; def cuda_path_EQ : Joined<["--"], "cuda-path=">, Group, HelpText<"CUDA installation path">; def fcuda_flush_denormals_to_zero : Flag<["-"], "fcuda-flush-denormals-to-zero">, diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 75424e8700..4dd860227d 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -10956,7 +10956,8 @@ void NVPTX::Assembler::ConstructJob(Compilation &C, const JobAction &JA, ArgStringList CmdArgs; CmdArgs.push_back(TC.getTriple().isArch64Bit() ? "-m64" : "-m32"); - if (Args.getLastArg(options::OPT_cuda_noopt_device_debug)) { + if (Args.hasFlag(options::OPT_cuda_noopt_device_debug, + options::OPT_no_cuda_noopt_device_debug, false)) { // ptxas does not accept -g option if optimization is enabled, so // we ignore the compiler's -O* options if we want debug info. CmdArgs.push_back("-g"); diff --git a/test/Driver/cuda-external-tools.cu b/test/Driver/cuda-external-tools.cu index 7a63960789..280c60966b 100644 --- a/test/Driver/cuda-external-tools.cu +++ b/test/Driver/cuda-external-tools.cu @@ -22,6 +22,11 @@ // RUN: %clang -### -target x86_64-linux-gnu --cuda-noopt-device-debug -O2 -c %s 2>&1 \ // RUN: | FileCheck -check-prefix ARCH64 -check-prefix SM20 -check-prefix DBG %s +// --no-cuda-noopt-device-debug overrides --cuda-noopt-device-debug. +// RUN: %clang -### -target x86_64-linux-gnu --cuda-noopt-debug \ +// RUN: --no-cuda-noopt-debug -O2 -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix ARCH64 -check-prefix SM20 -check-prefix OPT2 %s + // Regular compile without -O. This should result in us passing -O0 to ptxas. // RUN: %clang -### -target x86_64-linux-gnu -c %s 2>&1 \ // RUN: | FileCheck -check-prefix ARCH64 -check-prefix SM20 -check-prefix OPT0 %s