/* PR target/63542 */ /* { dg-do compile } */ /* { dg-options "-O2 -g -dA" } */ /* { dg-additional-options "-fpic" { target fpic } } */ float foo (long long u) { if (!(-(1LL << 53) < u && u < (1LL << 53))) { if ((unsigned long long) u & ((1ULL << 11) - 1)) { u &= ~((1ULL << 11) - 1); u |= (1ULL << 11); } } double f = (int) (u >> (32)); f *= 0x1p32f; f += (unsigned int) u; return (float) f; }