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;

}

Reply via email to