https://github.com/leovancekang updated https://github.com/llvm/llvm-project/pull/212419
>From 76359f57f9ccff9752935d9101b206769c923192 Mon Sep 17 00:00:00 2001 From: leovancekang <[email protected]> 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@" _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
