https://github.com/tyan0 updated 
https://github.com/llvm/llvm-project/pull/208925

>From d8c0b95372cc294daf23a1cc347e6b5dbf6e698b Mon Sep 17 00:00:00 2001
From: Takashi Yano <[email protected]>
Date: Sun, 12 Jul 2026 01:00:33 +0900
Subject: [PATCH 1/3] Fix compiler-rt library directory for cygwin

If compiler-rt is built with LLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF,
its search directory is incorrect.

Specifically, ToolChain::getOSLibName() returns `windows` instead
of `cygwin` in a Cygwin environment, due to falling back to getOS().
This results in a link error against compiler-rt.

This patch makes getOSLibName() return `cygwin`, ensuring that
compiler-rt is linked correctly.

Signed-off-by: Takashi Yano <[email protected]>
---
 clang/lib/Driver/ToolChain.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index f894a0635de13..f26fcbc39b37f 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -852,6 +852,8 @@ static StringRef getArchNameForCompilerRTLib(const 
ToolChain &TC,
 StringRef ToolChain::getOSLibName() const {
   if (Triple.isOSDarwin())
     return "darwin";
+  if (Triple.isWindowsCygwinEnvironment())
+    return "cygwin";
 
   switch (Triple.getOS()) {
   case llvm::Triple::FreeBSD:

>From fd16a28be4d92a18ce7e15c35868e945243f8032 Mon Sep 17 00:00:00 2001
From: Takashi Yano <[email protected]>
Date: Thu, 16 Jul 2026 12:25:40 +0900
Subject: [PATCH 2/3] Add a test for the path used with -rtlib=compiler-rt on
 Cygwin

---
 .../lib/cygwin/libclang_rt.builtins-x86_64.a      |  0
 .../libclang_rt.builtins.a                        |  0
 clang/test/Driver/cygwin-print-file-name.c        | 15 +++++++++++++++
 3 files changed, 15 insertions(+)
 create mode 100644 
clang/test/Driver/Inputs/resource_dir/lib/cygwin/libclang_rt.builtins-x86_64.a
 create mode 100644 
clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a
 create mode 100644 clang/test/Driver/cygwin-print-file-name.c

diff --git 
a/clang/test/Driver/Inputs/resource_dir/lib/cygwin/libclang_rt.builtins-x86_64.a
 
b/clang/test/Driver/Inputs/resource_dir/lib/cygwin/libclang_rt.builtins-x86_64.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git 
a/clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a
 
b/clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/cygwin-print-file-name.c 
b/clang/test/Driver/cygwin-print-file-name.c
new file mode 100644
index 0000000000000..1095ac9d138e3
--- /dev/null
+++ b/clang/test/Driver/cygwin-print-file-name.c
@@ -0,0 +1,15 @@
+// Test for compiler-rt library path for cygwin
+//
+// RUN: %clang --sysroot=%S/Inputs/basic_cygwin_tree \
+// RUN:        -resource-dir=%S/Inputs/resource_dir \
+// RUN:        --target=x86_64-pc-windows-cygnus \
+// RUN:        -print-file-name=libclang_rt.builtins-x86_64.a \
+// RUN:      | FileCheck --check-prefix=CHECK %s
+// CHECK: {{.*}}/lib/cygwin/libclang_rt.builtins-x86_64.a
+//
+// RUN: %clang --sysroot=%S/Inputs/basic_cygwin_tree \
+// RUN:        -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
+// RUN:        --target=x86_64-pc-windows-cygnus \
+// RUN:        -print-file-name=libclang_rt.builtins.a \
+// RUN:      | FileCheck --check-prefix=CHECK_PER_TARGET %s
+// CHECK_PER_TARGET: {{.*}}/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a

>From 973668770723ac13c9ea912116fa5cf49c9a0cb3 Mon Sep 17 00:00:00 2001
From: Takashi Yano <[email protected]>
Date: Thu, 16 Jul 2026 22:34:06 +0900
Subject: [PATCH 3/3] Allow backslash as well as slash in paths in
 cygwin-print-file-name.c

---
 clang/test/Driver/cygwin-print-file-name.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/clang/test/Driver/cygwin-print-file-name.c 
b/clang/test/Driver/cygwin-print-file-name.c
index 1095ac9d138e3..d16117eaec60a 100644
--- a/clang/test/Driver/cygwin-print-file-name.c
+++ b/clang/test/Driver/cygwin-print-file-name.c
@@ -5,11 +5,11 @@
 // RUN:        --target=x86_64-pc-windows-cygnus \
 // RUN:        -print-file-name=libclang_rt.builtins-x86_64.a \
 // RUN:      | FileCheck --check-prefix=CHECK %s
-// CHECK: {{.*}}/lib/cygwin/libclang_rt.builtins-x86_64.a
+// CHECK: {{.*}}{{/|\\}lib{{\|//}}cygwin{{/|\\}}libclang_rt.builtins-x86_64.a
 //
 // RUN: %clang --sysroot=%S/Inputs/basic_cygwin_tree \
 // RUN:        -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \
 // RUN:        --target=x86_64-pc-windows-cygnus \
 // RUN:        -print-file-name=libclang_rt.builtins.a \
 // RUN:      | FileCheck --check-prefix=CHECK_PER_TARGET %s
-// CHECK_PER_TARGET: {{.*}}/lib/x86_64-pc-windows-cygnus/libclang_rt.builtins.a
+// CHECK_PER_TARGET: 
{{.*}}{{/|\\}}lib{{/|\\}}x86_64-pc-windows-cygnus{{/|\\}}libclang_rt.builtins.a

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

Reply via email to