http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54855
--- Comment #7 from Marc Glisse <glisse at gcc dot gnu.org> 2012-11-30 01:31:25 UTC --- Created attachment 28832 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28832 simplify-rtx patch With the patch, this code takes a single instruction. However, if I replace 'a' with 1., it doesn't work (paradoxical subreg of mem...). I also see in the combine dump some weird things like: Failed to match this instruction: (set (reg:V2DF 66 [ D.2211 ]) (zero_extend:V2DF (mem/u/c:DF (symbol_ref/u:DI ("*.LC0") [flags 0x2]) [2 S8 A64]))) typedef double vec __attribute__((vector_size(16))); vec f(vec x,double a) { x[0] -= a; return x; }