Hi! As noted by Kirill Yukhin (and what lead to the previous tree-ssa.c patch), vec_set<mode> wasn't wired for 32-byte vectors. Although ix86_expand_vector_set handles 32-byte vectors just fine (even for AVX and integer vectors), without the expander we'd force things into memory etc.
Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? 2011-10-13 Jakub Jelinek <ja...@redhat.com> * config/i386/sse.md (vec_set<mode>): Change V_128 iterator mode to V. --- gcc/config/i386/sse.md.jj 2011-10-13 12:26:13.000000000 +0200 +++ gcc/config/i386/sse.md 2011-10-13 14:50:15.000000000 +0200 @@ -3786,7 +3786,7 @@ (define_split }) (define_expand "vec_set<mode>" - [(match_operand:V_128 0 "register_operand" "") + [(match_operand:V 0 "register_operand" "") (match_operand:<ssescalarmode> 1 "register_operand" "") (match_operand 2 "const_int_operand" "")] "TARGET_SSE" Jakub