From e6f6c65b4103e171d3e8052ec586c772a4704625 Mon Sep 17 00:00:00 2001 From: clyon Date: Wed, 2 Oct 2013 14:07:45 +0000 Subject: [PATCH] Add forgotten test case for r203059. 2013-10-01 Kugan Vivekanandarajah gcc/testsuite PR target/58578 * gcc.target/arm/pr58578.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203116 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/gcc.target/arm/pr58578.c | 54 ++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 gcc/testsuite/gcc.target/arm/pr58578.c diff --git a/gcc/testsuite/gcc.target/arm/pr58578.c b/gcc/testsuite/gcc.target/arm/pr58578.c new file mode 100644 index 00000000000..2b474f544f2 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr58578.c @@ -0,0 +1,54 @@ + +/* PR target/58578 */ +/* { dg-do run } */ +/* { dg-options "-O1" } */ + +#include + +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; +} -- 2.11.4.GIT