]> git.ipfire.org Git - thirdparty/gcc.git/commit
i386: Fix pr101950-2.c [PR115028]
authorAndrew Pinski <quic_apinski@quicinc.com>
Thu, 20 Feb 2025 21:03:51 +0000 (13:03 -0800)
committerAndrew Pinski <quic_apinski@quicinc.com>
Tue, 25 Feb 2025 21:47:52 +0000 (13:47 -0800)
commit892ee5ffba0760794a932e36771863a86ef2b271
tree90ec6e0f0c32e2d2164a04df414765b84a711d52
parentdf4565eaa9b02906a8fa6bb37845c0b4fdedaa20
i386: Fix pr101950-2.c [PR115028]

So what is happening here is that after r15-268-g9dbff9c05520a7,
a move instruction still exists after combine and the register
allocator choses different register allocation order for the xor
and because the input operand of lzcntq is not the same as output
operand, there is an extra xor that happens (due to an errata).

This fixes the testcase by using loading from a pointer instead
of a function argument directly. The register allocator has more
freedom since the load has no hard register associated with it (rdi)
so it can be in eax register right away.

Tested for both -m32 and -m64 on x86_64-linux-gnu.

gcc/testsuite/ChangeLog:

PR testsuite/115028
* gcc.target/i386/pr101950-2.c: Use a pointer argument instead
of the argument directly.

Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
gcc/testsuite/gcc.target/i386/pr101950-2.c