------- Comment #3 from rguenth at gcc dot gnu dot org 2008-02-28 16:47 ------- With the patch proposed for PR34043 we get
f: .LFB2: addss (%rdi), %xmm0 movd %xmm0, (%rsi) ret instead of f: .LFB2: addss (%rdi), %xmm0 movss %xmm0, -4(%rsp) movl -4(%rsp), %eax movl %eax, (%rsi) ret so expansion can handle f (a, b, e) { <bb 2>: *b = VIEW_CONVERT_EXPR<int>(*a + e); return; } well compared to f (a, b, e) { union a c; <bb 2>: c.f = *a + e; *b = c.i; return; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33989