------- Additional Comments From tbptbp at gmail dot com 2005-01-31 20:35 ------- Hmm, there's something fishy with _mm_set1_epi32.
With your patches there's no stack copy anymore but, with http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19714 testcase, i get: 00401080 <eliminated(int)>: 401080: 66 0f 6e 4c 24 04 movd 0x4(%esp),%xmm1 401086: 66 0f 70 c1 00 pshufd $0x0,%xmm1,%xmm0 40108b: c3 ret 00401090 <not_eliminated(int const*)>: 401090: 8b 44 24 04 mov 0x4(%esp),%eax 401094: 66 0f 6e 08 movd (%eax),%xmm1 401098: 66 0f 70 c1 00 pshufd $0x0,%xmm1,%xmm0 40109d: c3 ret 00401050 <not_eliminated_bis(int const&)>: 401050: 8b 44 24 04 mov 0x4(%esp),%eax 401054: 66 0f 6e 08 movd (%eax),%xmm1 401058: 66 0f 70 c1 00 pshufd $0x0,%xmm1,%xmm0 40105d: c3 ret ... and that's quite bogus :) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19680