aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKugan Vivekanandarajah <kuganv@linaro.org>2013-10-02 16:07:45 +0200
committerChristophe Lyon <clyon@gcc.gnu.org>2013-10-02 16:07:45 +0200
commit90926a2da5f122aaf28baf379c30d9d2f97d2475 (patch)
tree8b37fb3004eba8c5a49d5851c91a529238f04189 /gcc
parent826a536d2a36698f109d48aadba2936ce80c7812 (diff)
downloadgcc-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.c54
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;
+}