------- Comment #3 from rguenth at gcc dot gnu dot org 2009-03-30 14:56 ------- We want to simplify
(ashift:V4SI (neg:V4SI (reg:V4SI 87)) (const_int 1 [0x1])) to (neg:V4SI (ashift:V4Si (reg:V4SI 87) (const_int 1 [0x1])) but the code obviously doesn't expect vector modes. For the particular case of shifts we pass down zero, so the following would fix^Wworkaround the issue Index: gcc/combine.c =================================================================== --- gcc/combine.c (revision 145291) +++ gcc/combine.c (working copy) @@ -8974,7 +8974,8 @@ merge_outer_ops (enum rtx_code *pop0, HO /* ??? Slightly redundant with the above mask, but not entirely. Moving this above means we'd have to sign-extend the mode mask for the final test. */ - const0 = trunc_int_for_mode (const0, mode); + if (const0 != 0) + const0 = trunc_int_for_mode (const0, mode); *pop0 = op0; *pconst0 = const0; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39588