1 /* PR rtl-optimization/57960  */
2 
3 /* { dg-do compile } */
4 /* { dg-options "-march=z10 -m64 -mzarch  -O1" } */
5 
6 typedef union
7 {
8   long double value;
9   struct
10   {
11     unsigned int w0, w1, w2, w3;
12   }
13     parts32;
14 }
15   ieee854_long_double_shape_type;
16 static const long double one = 1.0L;
17 long double
__ieee754_acosl(long double x)18 __ieee754_acosl (long double x)
19 {
20   long double z, w;
21   int ix;
22   ieee854_long_double_shape_type u;
23 
24   z = (one - u.value) * 0.5;
25   u.parts32.w2 = 0;
26   u.parts32.w3 = 0;
27   w = z - u.value * u.value;
28   return 2.0 * w;
29 
30 }
31