blob: 98a4007306314fc7e632e69ff4e175c0569b7c9d [file] [log] [blame]
/* 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;
}