Fix libitm.c/memset-1.c test fails with new peephole2s.
authorRoger Sayle <roger@nextmovesoftware.com>
Mon, 14 Mar 2022 18:12:55 +0000 (18:12 +0000)
committerRoger Sayle <roger@nextmovesoftware.com>
Mon, 14 Mar 2022 18:12:55 +0000 (18:12 +0000)
commit6abc4e46f8c240aaab286414cdfb6d1e5eb9128a
treeb02ac1d8979e15c2e0ed2bf31ea091b5e3029c69
parent344e6f9f2abcff9b2bb4b26b693be4a599272f43
Fix libitm.c/memset-1.c test fails with new peephole2s.

My sincere apologies for the breakage, but alas handling SImode in the
recently added "xorl;movb -> movzbl" peephole2 turns out to be slightly
more complicated that just using SWI48 as a mode iterator.  I'd failed
to check the machine description carefully, but the *zero_extend<mode>si2
define_insn is conditionally defined, based on x86 target tuning using
TARGET_ZERO_EXTEND_WITH_AND, and therefore unavailable on 486 and pentium
unless optimizing the code for size.  It turns out that the libitm testsuite
specifies -m486 with make check RUNTESTFLAGS="--target_board='unix{-m32}'"
and therefore encounters/catches oversight.

Fixed by adding the appropriate conditions to the new peephole2 patterns.

2022-03-14  Roger Sayle  <roger@nextmovesoftware.com>
    Uroš Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog
* config/i386/i386.md (peephole2 xorl;movb -> movzbl): Disable
transformation when *zero_extend<mode>si2 is not available.

gcc/testsuite/ChangeLog
* gcc.target/i386/pr98335.c: Skip this test if tuning for i486
or pentium, and not optimizing for size.
gcc/config/i386/i386.md
gcc/testsuite/gcc.target/i386/pr98335.c