1  /* PR target/80706 */
       2  /* { dg-do run { target sse2_runtime } } */
       3  /* { dg-options "-O2 -msse2" } */
       4  
       5  union U { double value; struct S { int lsw; int msw; } parts; };
       6  
       7  __attribute__((noinline, noclone)) double
       8  foo (void)
       9  {
      10    __asm volatile ("" : : : "memory");
      11    return 2.0;
      12  }
      13  
      14  __attribute__((noinline, noclone)) double
      15  bar (void)
      16  {
      17    double s = foo ();
      18    union U z;
      19    z.value = s;
      20    z.parts.lsw = 0;
      21    return z.value * z.value + s * s;
      22  }
      23  
      24  int
      25  main ()
      26  {
      27    if (bar () != 8.0)
      28      __builtin_abort ();
      29    return 0;
      30  }