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