https://github.com/srividya-sundaram created 
https://github.com/llvm/llvm-project/pull/181752

None

>From bc2f36c6f8d415198f2c18e8758ccd6732ff692b Mon Sep 17 00:00:00 2001
From: srividya sundaram <[email protected]>
Date: Mon, 16 Feb 2026 14:24:21 -0800
Subject: [PATCH] [Clang][Driver][NFC] Capture -foffload-lto Arg before
 dereferencing

---
 clang/lib/Driver/ToolChains/Clang.cpp | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index c16aa33f29ebb..efa8ab7d659f5 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -5233,23 +5233,19 @@ void Clang::ConstructJob(Compilation &C, const 
JobAction &JA,
       CmdArgs.push_back("-emit-llvm-uselists");
 
     if (IsUsingLTO) {
+      Arg *OffloadLTO = Args.getLastArg(options::OPT_foffload_lto,
+                                        options::OPT_foffload_lto_EQ);
       if (IsDeviceOffloadAction && !JA.isDeviceOffloading(Action::OFK_OpenMP) 
&&
           !Args.hasFlag(options::OPT_offload_new_driver,
                         options::OPT_no_offload_new_driver,
                         C.isOffloadingHostKind(Action::OFK_Cuda)) &&
-          !Triple.isAMDGPU()) {
+          !Triple.isAMDGPU() && OffloadLTO) {
         D.Diag(diag::err_drv_unsupported_opt_for_target)
-            << Args.getLastArg(options::OPT_foffload_lto,
-                               options::OPT_foffload_lto_EQ)
-                   ->getAsString(Args)
-            << Triple.getTriple();
+            << OffloadLTO->getAsString(Args) << Triple.getTriple();
       } else if (Triple.isNVPTX() && !IsRDCMode &&
-                 JA.isDeviceOffloading(Action::OFK_Cuda)) {
+                 JA.isDeviceOffloading(Action::OFK_Cuda) && OffloadLTO) {
         D.Diag(diag::err_drv_unsupported_opt_for_language_mode)
-            << Args.getLastArg(options::OPT_foffload_lto,
-                               options::OPT_foffload_lto_EQ)
-                   ->getAsString(Args)
-            << "-fno-gpu-rdc";
+            << OffloadLTO->getAsString(Args) << "-fno-gpu-rdc";
       } else {
         assert(LTOMode == LTOK_Full || LTOMode == LTOK_Thin);
         CmdArgs.push_back(Args.MakeArgString(

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to