https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123111
--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Another testsuite fall out:
FAIL: gcc.target/i386/apx-ndd-cmov.c scan-assembler-times cmov(l.)?ge[^\n\r]*,
%eax 1
But this is:
```
cmpl %esi, %edi
cmovl %edx, %ecx, %eax
```
vs:
````
cmpl %esi, %edi
cmovge %ecx, %edx, %eax
```
Which is the same, just the true/false sides are swapped. So the testcase
needs to be changed to allow for swapped sides.
Some more:
FAIL: gcc.target/i386/pr103973-15.c scan-assembler-times \t[v]?comiss 4
FAIL: gcc.target/i386/pr103973-5.c scan-assembler-times \t[v]?comisd 4
FAIL: gcc.target/i386/pr103973-17.c scan-assembler-times \tfcom 4
FAIL: gcc.target/i386/pr103973-7.c scan-assembler-times \t[v]?comiss 4
FAIL: gcc.target/i386/pr103973-18.c scan-assembler-times \tfcom 4
FAIL: gcc.target/i386/pr103973-20.c scan-assembler-times \tfcom 4
FAIL: gcc.target/i386/pr103973-3.c scan-assembler-times \t[v]?comiss 4
FAIL: gcc.target/i386/pr103973-1.c scan-assembler-times \t[v]?comisd 4
FAIL: gcc.target/i386/pr103973-11.c scan-assembler-not \t[v]?ucomiss
FAIL: gcc.target/i386/pr103973-13.c scan-assembler-times \t[v]?comisd 4
FAIL: gcc.target/i386/pr92140.c scan-assembler-times \tsbbl\t\\$25, v 1
FAIL: gcc.target/i386/pr116896.c scan-assembler-not \tj[^mp][a-z]*\t
FAIL: gcc.target/i386/pr116896.c scan-assembler-times \tsbb[bl]\t\\$0, 4
FAIL: gcc.target/i386/pr116896.c scan-assembler-times \tseta\t 4
FAIL: gcc.target/i386/pr110591-2.c scan-assembler-not cmp[lq]?[ \\t]+
FAIL: gcc.target/i386/pr92140.c scan-assembler-times \tadcl\t\\$-26, v 1
FAIL: gcc.target/i386/pr92140.c scan-assembler-times \tsbbl\t\\$-26, v 1
FAIL: gcc.target/i386/pr92140.c scan-assembler-times \tsbbl\t\\$-43, v 1
FAIL: gcc.target/i386/pr92140.c scan-assembler-times \tadcl\t\\$42, v 1
FAIL: gcc.target/i386/pr92140.c scan-assembler-times \tsbbl\t\\$42, v 1
FAIL: gcc.target/i386/pr92140.c scan-assembler-times \tsbbl\t\\$-1, % 1
These are all missed optimizations.
So this is not going to work without improvements on the RTL side; back to the
drawing board.
Maybe for GCC 16, make_forwarders_with_degenerate_phis needs to be tuned down
if the edge comes from an ifconvertable edge. just so we get a copy/constant on
the edges there.