This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/33989] Extra load/store for float with union
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 11 Nov 2010 14:42:58 +0000
- Subject: [Bug middle-end/33989] Extra load/store for float with union
- Auto-submitted: auto-generated
- References: <bug-33989-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33989
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |
--- Comment #13 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-11 14:42:39 UTC ---
With 4.6 it should be fixed finally thanks to mem-ref and value-numbering
improvements.
;; Function f (f)
f (float * a, int * b, float e)
{
int D.2694;
float D.2690;
float D.2689;
<bb 2>:
D.2689_2 = *a_1(D);
D.2690_4 = D.2689_2 + e_3(D);
D.2694_10 = VIEW_CONVERT_EXPR<int>(D.2690_4);
*b_6(D) = D.2694_10;
return;
}
f:
.LFB0:
.cfi_startproc
addss (%rdi), %xmm0
movd %xmm0, (%rsi)
ret
.cfi_endproc
maybe you can verify on ppc.