On Sat, Mar 12, 2022 at 7:50 PM Roger Sayle <ro...@nextmovesoftware.com> wrote: > > > 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 my oversight. > > Fixed by adding the appropriate conditions to the new peephole2 patterns. > It don't think it's worth the effort to provide an equivalent optimization > for > these (very) old architectures. > > Tested on x86_64-pc-linux-gnu with make bootstrap and make -k check > with no new failures. Confirmed using RUNTESTFLAGS that this > fixes the above failure, and the recently added testcase with -march=i486. > Ok for mainline? > > > 2022-03-12 Roger Sayle <ro...@nextmovesoftware.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.
OK, but please use: <MODE>mode != SImode instead of <SWI48:MODE_SIZE> != 4 Thanks, Uros.