[flang-commits] [clang] [flang] [flang][Driver] Account for the default unwind library in linker test (PR #212419)

via flang-commits flang-commits at lists.llvm.org
Tue Aug 11 00:06:25 PDT 2026


https://github.com/leovancekang updated https://github.com/llvm/llvm-project/pull/212419

>From 76359f57f9ccff9752935d9101b206769c923192 Mon Sep 17 00:00:00 2001
From: leovancekang <leovancekang at outlook.com>
Date: Tue, 28 Jul 2026 14:15:39 +0800
Subject: [PATCH] [flang][Driver] Account for the default unwind library in
 linker test

The Flang compiler-rt linker test assumes that `-lgcc_s` is never
added. However, the compiler runtime and unwind library are selected
independently by clangDriver.

Export `CLANG_DEFAULT_UNWINDLIB` from `ClangConfig.cmake` and propagate
it to Flang's lit configuration. Select the linker test expectations
for each supported default: require `-lgcc_s` for libgcc, require
`-lunwind` for libunwind, and reject both for none or an empty default.
Continue rejecting the exact `-lgcc` linker argument in all
configurations.
---
 clang/cmake/modules/ClangConfig.cmake.in | 1 +
 flang/test/Driver/linker-flags.f90       | 8 ++++++--
 flang/test/lit.cfg.py                    | 3 +++
 flang/test/lit.site.cfg.py.in            | 1 +
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/clang/cmake/modules/ClangConfig.cmake.in b/clang/cmake/modules/ClangConfig.cmake.in
index f72a7d49602d8..fd0ff76f1e883 100644
--- a/clang/cmake/modules/ClangConfig.cmake.in
+++ b/clang/cmake/modules/ClangConfig.cmake.in
@@ -11,6 +11,7 @@ set(CLANG_CMAKE_DIR "@CLANG_CONFIG_CMAKE_DIR@")
 set(CLANG_INCLUDE_DIRS "@CLANG_CONFIG_INCLUDE_DIRS@")
 set(CLANG_LINK_CLANG_DYLIB "@CLANG_LINK_CLANG_DYLIB@")
 set(CLANG_DEFAULT_LINKER "@CLANG_DEFAULT_LINKER@")
+set(CLANG_DEFAULT_UNWINDLIB "@CLANG_DEFAULT_UNWINDLIB@")
 
 # Provide all our library targets to users. Skip when
 # LLVM_OMIT_EXPORTS_FROM_CONFIG flag is set.
diff --git a/flang/test/Driver/linker-flags.f90 b/flang/test/Driver/linker-flags.f90
index 2b56fdfb8da05..c4e0012b5c224 100644
--- a/flang/test/Driver/linker-flags.f90
+++ b/flang/test/Driver/linker-flags.f90
@@ -12,7 +12,8 @@
 ! RUN: %flang -### --target=x86_64-unknown-haiku %S/Inputs/hello.f90 2>&1 | FileCheck %s --check-prefixes=CHECK,HAIKU,HAIKU-F128%f128-lib
 ! RUN: %flang -### --target=x86_64-windows-gnu %S/Inputs/hello.f90 2>&1 | FileCheck %s --check-prefixes=CHECK,MINGW,MINGW-F128%f128-lib
 
-! RUN: %flang -### -rtlib=compiler-rt --target=aarch64-linux-gnu %S/Inputs/hello.f90 2>&1 | FileCheck %s --check-prefixes=CHECK,UNIX,COMPILER-RT
+! RUN: %flang -### -rtlib=compiler-rt --target=aarch64-linux-gnu %S/Inputs/hello.f90 2>&1 | FileCheck %s \
+! RUN:   --check-prefixes=CHECK,UNIX,COMPILER-RT,%if default-unwindlib=libgcc %{DEFAULT-UNWIND-LIBGCC%} %else %{%if default-unwindlib=libunwind %{DEFAULT-UNWIND-LIBUNWIND%} %else %{NO-DEFAULT-UNWIND%}%}
 
 ! NOTE: Clang's driver library, clangDriver, usually adds 'oldnames' on Windows,
 !       but it is not needed when compiling Fortran code and they might bring in
@@ -86,4 +87,7 @@
 ! MSVC-SAME: "[[object_file]]"
 
 ! COMPILER-RT-NOT: "-lgcc"
-! COMPILER-RT-NOT: "-lgcc_s"
+! DEFAULT-UNWIND-LIBGCC: "-lgcc_s"
+! DEFAULT-UNWIND-LIBUNWIND: "-lunwind"
+! NO-DEFAULT-UNWIND-NOT: "-lgcc_s"
+! NO-DEFAULT-UNWIND-NOT: "-lunwind"
diff --git a/flang/test/lit.cfg.py b/flang/test/lit.cfg.py
index 121854efe1f61..3e459f7f9a3bd 100644
--- a/flang/test/lit.cfg.py
+++ b/flang/test/lit.cfg.py
@@ -132,6 +132,9 @@
 if config.default_sysroot:
     config.available_features.add("default_sysroot")
 
+if config.clang_default_unwindlib:
+    config.available_features.add(f"default-unwindlib={config.clang_default_unwindlib}")
+
 host_triple = config.host_triple.split("-")
 config.available_features.add(f"{host_triple[0]}-host")
 
diff --git a/flang/test/lit.site.cfg.py.in b/flang/test/lit.site.cfg.py.in
index 12010e74fea43..df409067714e1 100644
--- a/flang/test/lit.site.cfg.py.in
+++ b/flang/test/lit.site.cfg.py.in
@@ -27,6 +27,7 @@ config.linked_bye_extension = @LLVM_BYE_LINK_INTO_TOOLS@
 config.osx_sysroot = path(r"@CMAKE_OSX_SYSROOT@")
 config.targets_to_build = "@TARGETS_TO_BUILD@"
 config.default_sysroot = "@DEFAULT_SYSROOT@"
+config.clang_default_unwindlib = "@CLANG_DEFAULT_UNWINDLIB@"
 config.flang_runtime_f128_math_lib = "@FLANG_RUNTIME_F128_MATH_LIB@"
 config.have_ldbl_mant_dig_113 = "@HAVE_LDBL_MANT_DIG_113@"
 



More information about the flang-commits mailing list