From: Kugan Vivekanandarajah Date: Wed, 2 Oct 2013 14:07:45 +0000 (+0200) Subject: Add forgotten test case for r203059. X-Git-Tag: releases/gcc-4.9.0~3753 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=90926a2da5f122aaf28baf379c30d9d2f97d2475;p=thirdparty%2Fgcc.git Add forgotten test case for r203059. 2013-10-01 Kugan Vivekanandarajah gcc/testsuite PR target/58578 * gcc.target/arm/pr58578.c: New test. From-SVN: r203116 --- diff --git a/gcc/testsuite/gcc.target/arm/pr58578.c b/gcc/testsuite/gcc.target/arm/pr58578.c new file mode 100644 index 000000000000..2b474f544f26 --- /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; +}