modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/20080704-1.c (about)

     1  /* This code used to crash fold_convert due to PRE
     2     wanting to fold_convert from a REAL_TYPE to an INTEGER_TYPE.  */
     3  typedef unsigned int uint32_t;
     4  union double_union
     5  {
     6    double d;
     7    uint32_t i[2];
     8  };
     9  struct _Jv_reent
    10  {
    11    int _errno;
    12  };
    13  _Jv_strtod_r (struct _Jv_reent *ptr, char **se)
    14  {
    15    int bb2, sign;
    16    double aadj, aadj1, adj;
    17    unsigned long y, z;
    18    union double_union rv, *bs = ((void *) 0), *delta = ((void *) 0);
    19    {
    20    ovfl:ptr->_errno = 34;
    21      {
    22        (((uint32_t) 0xfffffL) | ((uint32_t) 0x100000L) * (1024 + 1023 - 1));
    23      }
    24      if ((aadj = _Jv_ratio (delta, bs)) <= 2.)
    25        {
    26  	{
    27  	  if (aadj < 2. / 2)
    28  	    aadj = 1. / 2;
    29  	  aadj1 = -aadj;
    30  	}
    31        }
    32      {
    33        (rv.i[1]) -= 53 * ((uint32_t) 0x100000L);
    34        adj = aadj1 * _Jv_ulp (rv.d);
    35        rv.d += adj;
    36        if (((rv.i[1]) & ((uint32_t) 0x7ff00000L)) >=
    37  	  ((uint32_t) 0x100000L) * (1024 + 1023 - 53))
    38  	{
    39  	  goto ovfl;
    40  	}
    41      }
    42    }
    43  }