https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112917
Bug ID: 112917 Summary: Most strub execution tests FAIL on SPARC Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: ro at gcc dot gnu.org CC: aoliva at gcc dot gnu.org, ebotcazou at gcc dot gnu.org Target Milestone: --- Target: sparc-sun-solaris2.11 Most of the new strub execution tests FAIL on Solaris/SPARC (both 32 and 64-bit): FAIL: c-c++-common/strub-defer-O1.c -std=gnu++14 execution test FAIL: c-c++-common/strub-defer-O1.c -std=gnu++17 execution test FAIL: c-c++-common/strub-defer-O1.c -std=gnu++20 execution test FAIL: c-c++-common/strub-defer-O1.c -std=gnu++98 execution test 32-bit FAIL: c-c++-common/strub-defer-O2.c -std=gnu++14 execution test FAIL: c-c++-common/strub-defer-O2.c -std=gnu++17 execution test FAIL: c-c++-common/strub-defer-O2.c -std=gnu++20 execution test FAIL: c-c++-common/strub-defer-O2.c -std=gnu++98 execution test 32 and 64-bit FAIL: c-c++-common/strub-defer-O3.c -std=gnu++14 execution test FAIL: c-c++-common/strub-defer-O3.c -std=gnu++17 execution test FAIL: c-c++-common/strub-defer-O3.c -std=gnu++20 execution test FAIL: c-c++-common/strub-defer-O3.c -std=gnu++98 execution test FAIL: c-c++-common/strub-defer-Os.c -std=gnu++14 execution test FAIL: c-c++-common/strub-defer-Os.c -std=gnu++17 execution test FAIL: c-c++-common/strub-defer-Os.c -std=gnu++20 execution test FAIL: c-c++-common/strub-defer-Os.c -std=gnu++98 execution test 64-bit FAIL: c-c++-common/torture/strub-run1.c -O1 execution test FAIL: c-c++-common/torture/strub-run1.c -O2 execution test FAIL: c-c++-common/torture/strub-run1.c -O2 -flto execution test FAIL: c-c++-common/torture/strub-run1.c -O2 -flto -flto-partition=none execution test FAIL: c-c++-common/torture/strub-run1.c -Os execution test FAIL: c-c++-common/torture/strub-run3.c -O0 execution test FAIL: c-c++-common/torture/strub-run3.c -O1 execution test FAIL: c-c++-common/torture/strub-run3.c -O2 execution test FAIL: c-c++-common/torture/strub-run3.c -O2 -flto execution test FAIL: c-c++-common/torture/strub-run3.c -O2 -flto -flto-partition=none execution test FAIL: c-c++-common/torture/strub-run3.c -Os execution test FAIL: c-c++-common/torture/strub-run4.c -O0 execution test FAIL: c-c++-common/torture/strub-run4.c -O1 execution test FAIL: c-c++-common/torture/strub-run4.c -O2 execution test FAIL: c-c++-common/torture/strub-run4.c -O2 -flto execution test FAIL: c-c++-common/torture/strub-run4.c -O2 -flto -flto-partition=none execution test FAIL: c-c++-common/torture/strub-run4.c -Os execution test FAIL: c-c++-common/torture/strub-run4c.c -O0 execution test FAIL: c-c++-common/torture/strub-run4c.c -O1 execution test FAIL: c-c++-common/torture/strub-run4c.c -O2 execution test FAIL: c-c++-common/torture/strub-run4c.c -O2 -flto execution test FAIL: c-c++-common/torture/strub-run4c.c -O2 -flto -flto-partition=none execution test FAIL: c-c++-common/torture/strub-run4c.c -Os execution test FAIL: c-c++-common/torture/strub-run4d.c -O0 execution test FAIL: c-c++-common/torture/strub-run4d.c -O1 execution test FAIL: c-c++-common/torture/strub-run4d.c -O2 execution test FAIL: c-c++-common/torture/strub-run4d.c -O2 -flto execution test FAIL: c-c++-common/torture/strub-run4d.c -O2 -flto -flto-partition=none execution test FAIL: c-c++-common/torture/strub-run4d.c -Os execution test FAIL: c-c++-common/torture/strub-run4i.c -O0 execution test FAIL: c-c++-common/torture/strub-run4i.c -O1 execution test FAIL: c-c++-common/torture/strub-run4i.c -O2 execution test FAIL: c-c++-common/torture/strub-run4i.c -O2 -flto execution test FAIL: c-c++-common/torture/strub-run4i.c -O2 -flto -flto-partition=none execution test FAIL: c-c++-common/torture/strub-run4i.c -Os execution test 32 and 64-bit I've run two of the tests under gdb: Starting program: /var/gcc/regression/master/11.4-gcc-gas/build/gcc/testsuite/gcc/strub-defer-O1.exe [...] Thread 2 received signal SIGABRT, Aborted. [Switching to Thread 1 (LWP 1)] 0xfec394ec in __lwp_sigqueue () from /lib/libc.so.1 (gdb) bt #0 0xfec394ec in __lwp_sigqueue () from /lib/libc.so.1 #1 0xfeb770e8 in raise () from /lib/libc.so.1 #2 0xfeb485c0 in abort () from /lib/libc.so.1 #3 0x00010e5c in deferred_at_calls (.strub.watermark_ptr=<optimized out>) at /vol/gcc/src/hg/master/local/gcc/testsuite/c-c++-common/strub-defer-O3.c:83 #4 0x00010f60 in main () at /vol/gcc/src/hg/master/local/gcc/testsuite/c-c++-common/strub-defer-O3.c:106 Starting program: /var/gcc/regression/master/11.4-gcc-gas/build/gcc/testsuite/gcc/strub-run1.exe [...] Thread 2 received signal SIGABRT, Aborted. [Switching to Thread 1 (LWP 1)] 0xfec394ec in __lwp_sigqueue () from /lib/libc.so.1 (gdb) bt #0 0xfec394ec in __lwp_sigqueue () from /lib/libc.so.1 #1 0xfeb770e8 in raise () from /lib/libc.so.1 #2 0xfeb485c0 in abort () from /lib/libc.so.1 #3 0x00010f80 in main () at /vol/gcc/src/hg/master/local/gcc/testsuite/c-c++-common/torture/strub-run1.c:92 The documentation is incomplete AFAICT: while invoke.texi describes the -fstrub= options, it barely tell what this is all about. Seems to me like implementation detail without a high-level overview.