1/* { dg-require-effective-target int32plus } */
2typedef signed int __int32_t;
3typedef unsigned int __uint32_t;
4typedef union
5{
6  float value;
7  __uint32_t word;
8}
9ieee_float_shape_type;
10static const float two23 = 8.3886080000e+06;
11static const float pi = 3.1415927410e+00;
12static const float zero = 0.0000000000e+00;
13static float
14sin_pif (float x)
15{
16  float y = 0;
17  float z = 0;
18  __int32_t n = 0;
19  __int32_t ix = 0;
20  do
21    {
22      ieee_float_shape_type gf_u = { 0 };
23      (ix) = gf_u.word;
24    }
25  while (0);
26  if (z == y)
27    {
28      if (ix < 0x4b800000)
29	{
30	  if (ix < 0x4b000000)
31	    z = y + two23;
32	  do
33	    {
34	      ieee_float_shape_type gf_u;
35	      gf_u.value = (z);
36	      (n) = gf_u.word;
37	    }
38	  while (0);
39	}
40    }
41  if (n == 0)
42    y = __kernel_sinf (pi * y, zero, 0);
43}
44
45float
46__ieee754_lgammaf_r (float x, int *signgamp)
47{
48  float t = 0;
49  __int32_t hx = 0;
50  do
51    {
52      ieee_float_shape_type gf_u = { 0 };
53      (hx) = gf_u.word;
54    }
55  while (0);
56  if (hx < 0)
57    t = sin_pif (x);
58  return 0;
59}
60