From fef6cae00ce2138d3714fce5d4dfbde4f3c68922 Mon Sep 17 00:00:00 2001 From: Guillaume Giudicelli Date: Mon, 13 Jan 2025 15:54:30 -0700 Subject: [PATCH 1/3] Use DWARF unwinding with Clang to avoid overproduction of linking warnings with clang + gfortran refs idaholab/moose#29009 --- acsm_compiler_flags.m4 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/acsm_compiler_flags.m4 b/acsm_compiler_flags.m4 index dc075fb..e35a37d 100644 --- a/acsm_compiler_flags.m4 +++ b/acsm_compiler_flags.m4 @@ -585,6 +585,10 @@ AC_DEFUN([ACSM_SET_CXX_FLAGS], ], [clang], [ + dnl On Darwin with clang + gfortran, we get very many warnings for compact unwinding issues + dnl We deliberately keep relying on the less performant dwarf unwinding until the over-production of warnings is solved. + ACSM_LDFLAGS="-Wl,-keep_dwarf_unwind -Wl,-no_compact_unwind" + ACSM_CXXFLAGS_OPT="$ACSM_CXXFLAGS_OPT -O2 -felide-constructors -Qunused-arguments -Wunused-parameter -Wunused" dnl devel flags are added on two lines since there are so many ACSM_CXXFLAGS_DEVEL="$ACSM_CXXFLAGS_DEVEL -O2 -felide-constructors -g -pedantic -W -Wall -Wextra -Wno-long-long" From ac331541486f35c6a54d47abd2d996e897270a85 Mon Sep 17 00:00:00 2001 From: Guillaume Giudicelli Date: Thu, 30 Jan 2025 08:17:16 -0700 Subject: [PATCH 2/3] Add a linking test before adding linking flags to disable compact unwinding --- acsm_compiler_flags.m4 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/acsm_compiler_flags.m4 b/acsm_compiler_flags.m4 index e35a37d..2def975 100644 --- a/acsm_compiler_flags.m4 +++ b/acsm_compiler_flags.m4 @@ -587,7 +587,21 @@ AC_DEFUN([ACSM_SET_CXX_FLAGS], [clang], [ dnl On Darwin with clang + gfortran, we get very many warnings for compact unwinding issues dnl We deliberately keep relying on the less performant dwarf unwinding until the over-production of warnings is solved. - ACSM_LDFLAGS="-Wl,-keep_dwarf_unwind -Wl,-no_compact_unwind" + OLD_ACSM_LDFLAGS="$ACSM_LDFLAGS" + ACSM_LDFLAGS+=" -Wl,-femit-dwarf-unwind=no_compact_unwind" + AC_LINK_IFELSE([AC_LANG_SOURCE([[ + void main(int argc, char **argv) + { + std::cout << "Hello World!" << std::endl; + } + ]])], + [ + AC_MSG_RESULT(<<>>) + ],[ + dnl Failed to link with new flags, remove them + ACSM_LDFLAGS="$OLD_ACSM_LDFLAGS" + ]) + ACSM_CXXFLAGS_OPT="$ACSM_CXXFLAGS_OPT -O2 -felide-constructors -Qunused-arguments -Wunused-parameter -Wunused" dnl devel flags are added on two lines since there are so many From 20bfad5b31b55f9bbb0d7234eac5f53b236431e8 Mon Sep 17 00:00:00 2001 From: Guillaume Giudicelli Date: Thu, 30 Jan 2025 17:07:44 -0700 Subject: [PATCH 3/3] Fix linking test --- acsm_compiler_flags.m4 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/acsm_compiler_flags.m4 b/acsm_compiler_flags.m4 index 2def975..b6b5202 100644 --- a/acsm_compiler_flags.m4 +++ b/acsm_compiler_flags.m4 @@ -587,9 +587,10 @@ AC_DEFUN([ACSM_SET_CXX_FLAGS], [clang], [ dnl On Darwin with clang + gfortran, we get very many warnings for compact unwinding issues dnl We deliberately keep relying on the less performant dwarf unwinding until the over-production of warnings is solved. - OLD_ACSM_LDFLAGS="$ACSM_LDFLAGS" - ACSM_LDFLAGS+=" -Wl,-femit-dwarf-unwind=no_compact_unwind" + old_LDFLAGS="$LDFLAGS" + LDFLAGS+=" -Wl,-femit-dwarf-unwind=no_compact_unwind" AC_LINK_IFELSE([AC_LANG_SOURCE([[ + #include void main(int argc, char **argv) { std::cout << "Hello World!" << std::endl; @@ -597,10 +598,12 @@ AC_DEFUN([ACSM_SET_CXX_FLAGS], ]])], [ AC_MSG_RESULT(<<>>) + ACSM_LDFLAGS+=" -Wl,-femit-dwarf-unwind=no_compact_unwind" ],[ - dnl Failed to link with new flags, remove them - ACSM_LDFLAGS="$OLD_ACSM_LDFLAGS" + dnl Failed to link with new flags, do not add them ]) + dnl Reset to old flags in case for any potential other test + LDFLAGS="$old_LDFLAGS" ACSM_CXXFLAGS_OPT="$ACSM_CXXFLAGS_OPT -O2 -felide-constructors -Qunused-arguments -Wunused-parameter -Wunused"