http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55583
Marc Glisse <glisse at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |glisse at gcc dot gnu.org --- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> 2012-12-04 10:15:27 UTC --- It looks like the patterns all look for 32-i as the second shift amount. Writing an additional version that takes a constant (with an extra check that the sum of the constants is 32, and we then have to specify immediate_length manually) and replacing (match_dup 0) with an extra operand that has the constraint "0" seems to work. (and breaks again if I swap the 2 sides of operator| )