http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55730
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2012-12-18 CC| |jakub at gcc dot gnu.org Ever Confirmed|0 |1 --- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-12-18 15:21:00 UTC --- Even further reduced (-g -O2): union U { float f; int i; }; void foo (unsigned short *x, unsigned char y) { unsigned char g; union U u; if (u.i < 0) g = 0; else { u.f = u.f * (255.0F / 256.0F) + 32768.0F; g = (unsigned char) u.i; } *x = (g << 8) | y; }