[clang] [Driver][NVPTX] Add a warning that device debug info does not work with optimizations (PR #65327)

2023-09-18 Thread Georgi Mirazchiyski via cfe-commits

GeorgeWeb wrote:

@Artem-B Hi, sorry for the direct ping. I was just wondering if it's okay to 
take a quick look at this patch. 
(Didn't know how to ping folks subscribed to clang-driver).
Thanks! 🙏 

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


[clang] [NVPTX] Add a warning that device debug info does not work with optimizations (PR #65327)

2023-09-05 Thread Georgi Mirazchiyski via cfe-commits

https://github.com/GeorgeWeb created 
https://github.com/llvm/llvm-project/pull/65327:

Passing `-g` to `ptxas` with any optimizations enabled is not allowed because, 
`ptxas` does not support optimized debugging.

>From 0efb5b6f3042224cf89978f607d5ff9cd1665351 Mon Sep 17 00:00:00 2001
From: Georgi Mirazchiyski 
Date: Tue, 5 Sep 2023 14:21:24 +0100
Subject: [PATCH] [NVPTX] Add a warning that device debug info does not work
 with optimizations

Passing -g to ptxas with any optimizations enabled is not allowed because,
ptxas does not support optimized debugging.
---
 clang/lib/Driver/ToolChains/Cuda.cpp | 14 +-
 clang/test/Driver/cuda-external-tools.cu | 15 +++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp 
b/clang/lib/Driver/ToolChains/Cuda.cpp
index 97472a302715bb..3f76aa49822c26 100644
--- a/clang/lib/Driver/ToolChains/Cuda.cpp
+++ b/clang/lib/Driver/ToolChains/Cuda.cpp
@@ -413,13 +413,25 @@ void NVPTX::Assembler::ConstructJob(Compilation &C, const 
JobAction &JA,
 // TODO: Perhaps we should map host -O2 to ptxas -O3. -O3 is ptxas's
 // default, so it may correspond more closely to the spirit of clang -O2.
 
+bool noOptimization = A->getOption().matches(options::OPT_O0);
+// Emit a driver diagnostic as warning if any -O option different from -O0,
+// is passed since ptxas does not support optimized debugging.
+if (!noOptimization) {
+  auto &Diags = TC.getDriver().getDiags();
+  unsigned DiagID = Diags.getCustomDiagID(
+  DiagnosticsEngine::Warning,
+  "ptxas cannot emit debug info with optimization "
+  "level ('%0') different than O0.");
+  Diags.Report(DiagID) << A->getAsString(Args);
+}
+
 // -O3 seems like the least-bad option when -Osomething is specified to
 // clang but it isn't handled below.
 StringRef OOpt = "3";
 if (A->getOption().matches(options::OPT_O4) ||
 A->getOption().matches(options::OPT_Ofast))
   OOpt = "3";
-else if (A->getOption().matches(options::OPT_O0))
+else if (noOptimization)
   OOpt = "0";
 else if (A->getOption().matches(options::OPT_O)) {
   // -Os, -Oz, and -O(anything else) map to -O2, for lack of better 
options.
diff --git a/clang/test/Driver/cuda-external-tools.cu 
b/clang/test/Driver/cuda-external-tools.cu
index 1aa87cc09982c6..c49ba51b660ef5 100644
--- a/clang/test/Driver/cuda-external-tools.cu
+++ b/clang/test/Driver/cuda-external-tools.cu
@@ -28,6 +28,17 @@
 // RUN:   --offload-arch=sm_35 --cuda-path=%S/Inputs/CUDA/usr/local/cuda \
 // RUN: | FileCheck -check-prefixes=CHECK,ARCH64,SM35,RDC %s
 
+// Compiling -O{1,2,3,4,fast,s,z} with -g does not pass -g debug info to ptxas.
+// NOTE: This is because ptxas does not support optimized debugging.
+// RUN: %clang -### --target=x86_64-linux-gnu -O3 -g -c %s 2>&1 \
+// RUN:   --offload-arch=sm_35 --cuda-path=%S/Inputs/CUDA/usr/local/cuda \
+// RUN: | FileCheck -check-prefixes=CHECK,ARCH64,SM35,OPT3-DBG %s
+
+// Compiling -O0 with -g passes -g debug info to ptxas.
+// RUN: %clang -### --target=x86_64-linux-gnu -O0 -g -c %s 2>&1 \
+// RUN:   --offload-arch=sm_35 --cuda-path=%S/Inputs/CUDA/usr/local/cuda \
+// RUN: | FileCheck -check-prefixes=CHECK,ARCH64,SM35,OPT0-DBG %s
+
 // With debugging enabled, ptxas should be run with with no ptxas 
optimizations.
 // RUN: %clang -### --target=x86_64-linux-gnu --cuda-noopt-device-debug -O2 -g 
-c %s 2>&1 \
 // RUN:   --offload-arch=sm_35 --cuda-path=%S/Inputs/CUDA/usr/local/cuda \
@@ -134,6 +145,10 @@
 // OPT2-NOT: "-g"
 // OPT3-SAME: "-O3"
 // OPT3-NOT: "-g"
+// OPT3-DBG-SAME: "-O3" "-lineinfo"
+// OPT3-DBG-NOT: "-g"
+// OPT0-DBG-SAME: "-g" "--dont-merge-basicblocks" "--return-at-end"
+// OPT0-DBG-NOT: "-O0"
 // DBG-SAME: "-g" "--dont-merge-basicblocks" "--return-at-end"
 // SM35-SAME: "--gpu-name" "sm_35"
 // SM35-SAME: "--output-file" "[[CUBINFILE:[^"]*]]"

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NVPTX] Add a warning that device debug info does not work with optimizations (PR #65327)

2023-09-05 Thread Georgi Mirazchiyski via cfe-commits

https://github.com/GeorgeWeb review_requested 
https://github.com/llvm/llvm-project/pull/65327
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [NVPTX] Add a warning that device debug info does not work with optimizations (PR #65327)

2023-09-05 Thread Georgi Mirazchiyski via cfe-commits

https://github.com/GeorgeWeb updated 
https://github.com/llvm/llvm-project/pull/65327:

>From 757383fd9a9783c290fd4957e4e7526b854c9920 Mon Sep 17 00:00:00 2001
From: Georgi Mirazchiyski 
Date: Tue, 5 Sep 2023 14:21:24 +0100
Subject: [PATCH] [Driver][NVPTX] Add a warning that device debug info does not
 work with optimizations

Passing -g to ptxas with any optimizations enabled is not allowed because,
ptxas does not support optimized debugging.
---
 clang/lib/Driver/ToolChains/Cuda.cpp | 14 +-
 clang/test/Driver/cuda-external-tools.cu | 15 +++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp 
b/clang/lib/Driver/ToolChains/Cuda.cpp
index 97472a302715bb..3f76aa49822c26 100644
--- a/clang/lib/Driver/ToolChains/Cuda.cpp
+++ b/clang/lib/Driver/ToolChains/Cuda.cpp
@@ -413,13 +413,25 @@ void NVPTX::Assembler::ConstructJob(Compilation &C, const 
JobAction &JA,
 // TODO: Perhaps we should map host -O2 to ptxas -O3. -O3 is ptxas's
 // default, so it may correspond more closely to the spirit of clang -O2.
 
+bool noOptimization = A->getOption().matches(options::OPT_O0);
+// Emit a driver diagnostic as warning if any -O option different from -O0,
+// is passed since ptxas does not support optimized debugging.
+if (!noOptimization) {
+  auto &Diags = TC.getDriver().getDiags();
+  unsigned DiagID = Diags.getCustomDiagID(
+  DiagnosticsEngine::Warning,
+  "ptxas cannot emit debug info with optimization "
+  "level ('%0') different than O0.");
+  Diags.Report(DiagID) << A->getAsString(Args);
+}
+
 // -O3 seems like the least-bad option when -Osomething is specified to
 // clang but it isn't handled below.
 StringRef OOpt = "3";
 if (A->getOption().matches(options::OPT_O4) ||
 A->getOption().matches(options::OPT_Ofast))
   OOpt = "3";
-else if (A->getOption().matches(options::OPT_O0))
+else if (noOptimization)
   OOpt = "0";
 else if (A->getOption().matches(options::OPT_O)) {
   // -Os, -Oz, and -O(anything else) map to -O2, for lack of better 
options.
diff --git a/clang/test/Driver/cuda-external-tools.cu 
b/clang/test/Driver/cuda-external-tools.cu
index 1aa87cc09982c6..c49ba51b660ef5 100644
--- a/clang/test/Driver/cuda-external-tools.cu
+++ b/clang/test/Driver/cuda-external-tools.cu
@@ -28,6 +28,17 @@
 // RUN:   --offload-arch=sm_35 --cuda-path=%S/Inputs/CUDA/usr/local/cuda \
 // RUN: | FileCheck -check-prefixes=CHECK,ARCH64,SM35,RDC %s
 
+// Compiling -O{1,2,3,4,fast,s,z} with -g does not pass -g debug info to ptxas.
+// NOTE: This is because ptxas does not support optimized debugging.
+// RUN: %clang -### --target=x86_64-linux-gnu -O3 -g -c %s 2>&1 \
+// RUN:   --offload-arch=sm_35 --cuda-path=%S/Inputs/CUDA/usr/local/cuda \
+// RUN: | FileCheck -check-prefixes=CHECK,ARCH64,SM35,OPT3-DBG %s
+
+// Compiling -O0 with -g passes -g debug info to ptxas.
+// RUN: %clang -### --target=x86_64-linux-gnu -O0 -g -c %s 2>&1 \
+// RUN:   --offload-arch=sm_35 --cuda-path=%S/Inputs/CUDA/usr/local/cuda \
+// RUN: | FileCheck -check-prefixes=CHECK,ARCH64,SM35,OPT0-DBG %s
+
 // With debugging enabled, ptxas should be run with with no ptxas 
optimizations.
 // RUN: %clang -### --target=x86_64-linux-gnu --cuda-noopt-device-debug -O2 -g 
-c %s 2>&1 \
 // RUN:   --offload-arch=sm_35 --cuda-path=%S/Inputs/CUDA/usr/local/cuda \
@@ -134,6 +145,10 @@
 // OPT2-NOT: "-g"
 // OPT3-SAME: "-O3"
 // OPT3-NOT: "-g"
+// OPT3-DBG-SAME: "-O3" "-lineinfo"
+// OPT3-DBG-NOT: "-g"
+// OPT0-DBG-SAME: "-g" "--dont-merge-basicblocks" "--return-at-end"
+// OPT0-DBG-NOT: "-O0"
 // DBG-SAME: "-g" "--dont-merge-basicblocks" "--return-at-end"
 // SM35-SAME: "--gpu-name" "sm_35"
 // SM35-SAME: "--output-file" "[[CUBINFILE:[^"]*]]"

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [Driver][NVPTX] Add a warning that device debug info does not work with optimizations (PR #65327)

2023-09-05 Thread Georgi Mirazchiyski via cfe-commits

https://github.com/GeorgeWeb edited 
https://github.com/llvm/llvm-project/pull/65327
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [Driver][NVPTX] Add a warning that device debug info does not work with optimizations (PR #65327)

2024-09-04 Thread Georgi Mirazchiyski via cfe-commits

https://github.com/GeorgeWeb closed 
https://github.com/llvm/llvm-project/pull/65327
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [Driver][NVPTX] Add a warning that device debug info does not work with optimizations (PR #65327)

2024-09-04 Thread Georgi Mirazchiyski via cfe-commits

GeorgeWeb wrote:

Agreed not to go this path, hence closing this PR. Thanks for reviews.

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