/* { dg-do run } */
/* { dg-options "-O2 -mno-sse" } */

int flag;
union { double f; unsigned long long i; } u;
void __attribute__((noinline))
init ()
{
  flag = 1;
  u.i = 18442936822990639076ULL;
}
unsigned long long __attribute__((noinline))
test ()
{
  if (flag)
    return u.i;
  else
    return u.f;
}
int main()
{
  init ();
  if (test () != 18442936822990639076ULL)
    __builtin_abort ();
  return 0;
}