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 foo(void)8foo (void) 9 { 10 __asm volatile ("" : : : "memory"); 11 return 2.0; 12 } 13 14 __attribute__((noinline, noclone)) double bar(void)15bar (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 main()25main () 26 { 27 if (bar () != 8.0) 28 __builtin_abort (); 29 return 0; 30 } 31