On Sun, Dec 01, 2019 at 03:43:37PM +0100, Jan Hubicka wrote: > > PR target/92549 > > * config/i386/i386.md (peephole2 for *swap<mode>): New peephole2. > > > > * gcc.target/i386/pr92549.c: New test. > > It is very hard to get a testcase, unforutnately, but I got the > following (locally non-reproducible) failure while building firefox with > LTO+FDO: > > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - 1080 | } > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - | > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (insn 5555 1389 1390 41 > (parallel [ > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (set (reg:SI > 24 xmm4 [orig:187 SR.3778 ] [187]) > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (reg:SI 23 xmm3 [orig:104 > SR.3780 ] [104])) > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (set (reg:SI > 23 xmm3 [orig:104 SR.3780 ] [104]) > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - (reg:SI 24 xmm4 [orig:187 > SR.3778 ] [187])) > [task 2019-12-01T14:38:04.166Z] 14:38:04 INFO - ]) > "/builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/WritingModes.h":1117:0 > 78 {*swapsi} > [task 2019-12-01T14:38:04.167Z] 14:38:04 INFO - (nil)) > [task 2019-12-01T14:38:04.167Z] 14:38:04 INFO - during RTL pass: rnreg > > I guess the problem is that there is no xchange in SSE instruction set, > so peephle needs to be more restrictive?
I'll have a look tomorrow. Jakub