http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52437
--- Comment #2 from Uros Bizjak <ubizjak at gmail dot com> 2012-02-29 20:32:06 UTC --- This patch adds missing alternative, and also disparages alternatives that end with excess register->mem moves. Index: sse.md =================================================================== --- sse.md (revision 184630) +++ sse.md (working copy) @@ -3895,13 +3895,13 @@ ;; see comment above inline_secondary_memory_needed function in i386.c (define_insn "vec_set<mode>_0" [(set (match_operand:VI4F_128 0 "nonimmediate_operand" - "=x,x,x ,x,x,x,x ,x ,m,m ,m") + "=x,x,x ,x,x,x,x ,x ,m ,m ,m") (vec_merge:VI4F_128 (vec_duplicate:VI4F_128 (match_operand:<ssescalarmode> 2 "general_operand" - " x,m,*r,m,x,x,*rm,*rm,x,fF,*r")) + " x,m,*r,m,x,x,*rm,*rm,!x,!*rn,!*fF")) (match_operand:VI4F_128 1 "vector_move_operand" - " C,C,C ,C,0,x,0 ,x ,0,0 ,0") + " C,C,C ,C,0,x,0 ,x ,0 ,0 ,0") (const_int 1)))] "TARGET_SSE" "@