Hi! In r16-3414 libstdc++ changed ABI for (still experimental C++20) and uses unordered value -128 instead of 2. Generally the change improved code generation on all targets tested, see https://gcc.gnu.org/pipermail/gcc-patches/2025-August/693534.html for details. In r16-3474 I've adjusted the middle-end and backends to use that value. This apparently broke the spaceship_1.C test on aarch64 which scans the exact function bodies which are now different.
The following patch adjusts the full body patterns to match. On these 2 routines, the generated code is 1 insn longer than in the past, so if you have ideas how to change the code generation for the common case of -1, 0, 1, -128 value, maybe it could be improved. Bootstrapped/regtested on aarch64-linux, ok for trunk? 2025-09-02 Jakub Jelinek <[email protected]> PR testsuite/121732 PR target/117013 * g++.target/aarch64/spaceship_1.C: Adjust expected fn bodies for _Z8ss_floatff and _Z9ss_doubledd. --- gcc/testsuite/g++.target/aarch64/spaceship_1.C.jj 2025-04-24 10:28:03.612157217 +0200 +++ gcc/testsuite/g++.target/aarch64/spaceship_1.C 2025-09-01 17:05:07.386649865 +0200 @@ -34,8 +34,9 @@ ** _Z8ss_floatff: ** fcmpe s0, s1 ** csinv (w[0-9]+), wzr, wzr, pl -** cset (w[0-9]+), vs -** csinc w0, \1, \2, ls +** mov (w[0-9]+), -129 +** csel (w[0-9]+), \2, wzr, vs +** csinc w0, \1, \3, ls ** ret */ SPACESHIP_FN(float); @@ -53,8 +54,9 @@ SPACESHIP_FN_NN(float); ** _Z9ss_doubledd: ** fcmpe d0, d1 ** csinv (w[0-9]+), wzr, wzr, pl -** cset (w[0-9]+), vs -** csinc w0, \1, \2, ls +** mov (w[0-9]+), -129 +** csel (w[0-9]+), \2, wzr, vs +** csinc w0, \1, \3, ls ** ret */ SPACESHIP_FN(double); Jakub
