Add forgotten test case for r203059.
authorKugan Vivekanandarajah <kuganv@linaro.org>
Wed, 2 Oct 2013 14:07:45 +0000 (16:07 +0200)
committerChristophe Lyon <clyon@gcc.gnu.org>
Wed, 2 Oct 2013 14:07:45 +0000 (16:07 +0200)
2013-10-01  Kugan Vivekanandarajah  <kuganv@linaro.org>

        gcc/testsuite
        PR target/58578
        * gcc.target/arm/pr58578.c: New test.

From-SVN: r203116

gcc/testsuite/gcc.target/arm/pr58578.c [new file with mode: 0644]

diff --git a/gcc/testsuite/gcc.target/arm/pr58578.c b/gcc/testsuite/gcc.target/arm/pr58578.c
new file mode 100644 (file)
index 0000000..2b474f5
--- /dev/null
@@ -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;
+}