1/* PR target/63542 */
2/* { dg-do compile } */
3/* { dg-options "-O2 -g -dA" } */
4/* { dg-additional-options "-fpic" { target fpic } } */
5
6float
7foo (long long u)
8{
9  if (!(-(1LL << 53) < u && u < (1LL << 53)))
10    {
11      if ((unsigned long long) u & ((1ULL << 11) - 1))
12	{
13	  u &= ~((1ULL << 11) - 1);
14	  u |= (1ULL << 11);
15	}
16    }
17  double f = (int) (u >> (32));
18  f *= 0x1p32f;
19  f += (unsigned int) u;
20  return (float) f;
21}
22