/* PR rtl-optimization/61446 */ /* { dg-do compile { target { ia32 } } } */ /* { dg-options "-O2 -march=corei7 -mfpmath=387" } */ unsigned long long foo (float a) { const double dfa = a; const unsigned int hi = dfa / 0x1p32f; const unsigned int lo = dfa - (double) hi * 0x1p32f; return ((unsigned long long) hi << (4 * (8))) | lo; }