http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46088
--- Comment #4 from Uros Bizjak <ubizjak at gmail dot com> 2010-11-04 16:32:57
UTC ---
The insn that was matched looks like:
(gdb) up
#1 0x0000000000b9da94 in recog_7 (x0=0x7ffff1f329d8, insn=0x7ffff1f296c0,
pnum_clobbers=0x7fffffffdc9c)
at ../../gcc-svn/trunk/gcc/config/i386/i386.md:10089
10089 && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
(gdb) p debug_rtx (insn)
(insn 7 6 8 2 (set (reg:CCZ 17 flags)
(compare:CCZ (lshiftrt:SI (reg/v:SI 60 [ i ])
(const_int 3 [0x3]))
(const_int 0 [0]))) pr46088.c:5 2 {*cmpsi_ccno_1}
(nil))
$1 = void
So, clobber of the scratch reg is missing, but the insn is recognized as
*lshrsi3_cconly anyway.