Update ChangeLog and version files for release
[official-gcc.git] / gcc / testsuite / gcc.target / arm / pr58578.c
blob2b474f544f26f6e71ec15d85d6006b24e5c33078
2 /* PR target/58578 */
3 /* { dg-do run } */
4 /* { dg-options "-O1" } */
6 #include <stdlib.h>
8 typedef struct {
9 long _prec;
10 int _flag;
11 long _exp;
12 } __my_st_t;
14 typedef __my_st_t *__my_st_ptr;
16 int
17 _test_fn (__my_st_ptr y, const __my_st_ptr xt)
19 int inexact;
20 if (xt->_exp != -2147483647L)
22 (y->_flag = xt->_flag);
25 do {
26 __my_st_ptr _y = y;
27 long _err1 = -2 * xt->_exp;
28 long _err2 = 2;
29 if (0 < _err1)
31 unsigned long _err = (unsigned long) _err1 + _err2;
32 if (__builtin_expect(!!(_err > _y->_prec + 1), 0))
33 return 2;
34 return 3;
36 } while (0);
38 return 0;
41 int main ()
43 __my_st_t x, y;
44 long pz;
45 int inex;
47 x._prec = 914;
48 y._exp = 18;
49 if (_test_fn (&x, &y))
51 abort();
53 return 0;