As per the analysis in the PR, tested on x86_64, i686 and aarch64 Darwin (and on x86_64 linux), pushed to trunk, thanks, Iain
--- 8< --- For Darwin, non-weak functions defined in a TU always bind locally and so cxa_atexit-6.C is not applicable here. PR testsuite/114982 gcc/testsuite/ChangeLog: * g++.dg/tree-ssa/cxa_atexit-6.C: Skip for Darwin. Signed-off-by: Iain Sandoe <i...@sandoe.co.uk> --- gcc/testsuite/g++.dg/tree-ssa/cxa_atexit-6.C | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/g++.dg/tree-ssa/cxa_atexit-6.C b/gcc/testsuite/g++.dg/tree-ssa/cxa_atexit-6.C index f6599a3c9f4..e22036067dd 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/cxa_atexit-6.C +++ b/gcc/testsuite/g++.dg/tree-ssa/cxa_atexit-6.C @@ -2,10 +2,14 @@ /* { dg-require-effective-target fpic } */ /* { dg-options "-O2 -fdump-tree-cddce1-details -fdump-tree-optimized -fPIC" } */ // { dg-require-effective-target cxa_atexit } +/* This test is not appropriate for targets where non-weak functions defined + in the TU always bind locally; see PR114982. */ +/* { dg-skip-if "PR114982" { *-*-darwin* } } */ /* PR tree-optimization/19661 */ /* The call to axexit should not be removed as A::~A() cannot be figured if it - is a pure/const function call as the function call g does not bind locally. */ + is a pure/const function call for platforms where the function call g does + not bind locally. */ __attribute__((noinline)) void g() {} -- 2.39.2 (Apple Git-143)