diff options
author | Kugan Vivekanandarajah <kuganv@linaro.org> | 2013-10-02 16:07:45 +0200 |
---|---|---|
committer | Christophe Lyon <clyon@gcc.gnu.org> | 2013-10-02 16:07:45 +0200 |
commit | 90926a2da5f122aaf28baf379c30d9d2f97d2475 (patch) | |
tree | 8b37fb3004eba8c5a49d5851c91a529238f04189 /gcc | |
parent | 826a536d2a36698f109d48aadba2936ce80c7812 (diff) | |
download | gcc-90926a2da5f122aaf28baf379c30d9d2f97d2475.zip gcc-90926a2da5f122aaf28baf379c30d9d2f97d2475.tar.gz gcc-90926a2da5f122aaf28baf379c30d9d2f97d2475.tar.bz2 |
Add forgotten test case for r203059.
2013-10-01 Kugan Vivekanandarajah <kuganv@linaro.org>
gcc/testsuite
PR target/58578
* gcc.target/arm/pr58578.c: New test.
From-SVN: r203116
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr58578.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/arm/pr58578.c b/gcc/testsuite/gcc.target/arm/pr58578.c new file mode 100644 index 0000000..2b474f5 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr58578.c @@ -0,0 +1,54 @@ + +/* PR target/58578 */ +/* { dg-do run } */ +/* { dg-options "-O1" } */ + +#include <stdlib.h> + +typedef struct { + long _prec; + int _flag; + long _exp; +} __my_st_t; + +typedef __my_st_t *__my_st_ptr; + +int +_test_fn (__my_st_ptr y, const __my_st_ptr xt) +{ + int inexact; + if (xt->_exp != -2147483647L) + { + (y->_flag = xt->_flag); + } + + do { + __my_st_ptr _y = y; + long _err1 = -2 * xt->_exp; + long _err2 = 2; + if (0 < _err1) + { + unsigned long _err = (unsigned long) _err1 + _err2; + if (__builtin_expect(!!(_err > _y->_prec + 1), 0)) + return 2; + return 3; + } + } while (0); + + return 0; +} + +int main () +{ + __my_st_t x, y; + long pz; + int inex; + + x._prec = 914; + y._exp = 18; + if (_test_fn (&x, &y)) + { + abort(); + } + return 0; +} |