(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arm/
pr58578.c
       1  
       2  /* PR target/58578 */
       3  /* { dg-do run } */
       4  /* { dg-options "-O1" } */
       5  
       6  #include <stdlib.h>
       7  
       8  typedef struct {
       9      long _prec;
      10      int _flag;
      11      long _exp;
      12  } __my_st_t;
      13  
      14  typedef __my_st_t *__my_st_ptr;
      15  
      16  int
      17  _test_fn (__my_st_ptr y, const __my_st_ptr xt)
      18  {
      19    int inexact;
      20    if (xt->_exp != -2147483647L)
      21      {
      22        (y->_flag = xt->_flag);
      23      }
      24  
      25    do {
      26        __my_st_ptr _y = y;
      27        long _err1 = -2 * xt->_exp;
      28        long _err2 = 2;
      29        if (0 < _err1)
      30  	{
      31  	  unsigned long _err = (unsigned long) _err1 + _err2;
      32  	  if (__builtin_expect(!!(_err > _y->_prec + 1), 0))
      33  	    return 2;
      34  	  return 3;
      35  	}
      36    } while (0);
      37  
      38    return 0;
      39  }
      40  
      41  int main ()
      42  {
      43    __my_st_t x, y;
      44    long pz;
      45    int inex;
      46  
      47    x._prec = 914;
      48    y._exp = 18;
      49    if (_test_fn (&x, &y))
      50      {
      51        abort();
      52      }
      53    return 0;
      54  }