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