Author: Haowei
Date: 2026-06-16T19:56:57-07:00
New Revision: f67bdab61ab2c131a7c14a1cce226be80dbad4db

URL: 
https://github.com/llvm/llvm-project/commit/f67bdab61ab2c131a7c14a1cce226be80dbad4db
DIFF: 
https://github.com/llvm/llvm-project/commit/f67bdab61ab2c131a7c14a1cce226be80dbad4db.diff

LOG: [clang][driver] Fix flang frontend resolution for symlinked clang driver 
(#204253)

When clang is built as a symlink to the llvm multicall binary, the
driver resolves the executable path to 'llvm', making D.Name 'llvm'
instead of 'clang'.
This broke the detection of 'clang --driver-mode=flang' in Flang.cpp,
causing the driver to try to run 'llvm -fc1' instead of looking up
'flang', after change in #200438 was landed.

Fix this by checking D.getPrependArg() in addition to D.Name to identify
if we are acting as clang. Also use D.IsFlangMode() for simpler and more
robust detection of the driver mode.

Added: 
    

Modified: 
    clang/lib/Driver/ToolChains/Flang.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Driver/ToolChains/Flang.cpp 
b/clang/lib/Driver/ToolChains/Flang.cpp
index 3e8adbb39349b..aed572c32ccd6 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -1328,10 +1328,11 @@ void Flang::ConstructJob(Compilation &C, const 
JobAction &JA,
 
   // Handle "clang --driver-mode=flang" case
   bool isClangDriverWithFlangMode = false;
-  if (D.Name.find("clang") != std::string_view::npos)
-    if (const Arg *A = Args.getLastArg(options::OPT_driver_mode))
-      if (StringRef(A->getValue()) == "flang")
-        isClangDriverWithFlangMode = true;
+  std::string DriverName = D.Name;
+  if (const char *PA = D.getPrependArg())
+    DriverName = PA;
+  if (DriverName.find("clang") != std::string::npos && D.IsFlangMode())
+    isClangDriverWithFlangMode = true;
 
   const char *Exec = isClangDriverWithFlangMode
                          ? Args.MakeArgString(D.GetProgramPath("flang", TC))


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

Reply via email to