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.

Reply via email to