re PR middle-end/35595 (build broke in newlib erf_lgamma.c for cris-elf)
authorHans-Peter Nilsson <hp@axis.com>
Sat, 15 Mar 2008 03:55:22 +0000 (03:55 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Sat, 15 Mar 2008 03:55:22 +0000 (03:55 +0000)
PR middle-end/35595
* gcc.c-torture/compile/pr35595.c: New test.

From-SVN: r133238

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr35595.c [new file with mode: 0644]

index 4429cbe2606e9f243f17f5d2ba297bcf6ca5d100..6467ca44af45714a2812ce174a9fd909a40bfde0 100644 (file)
@@ -1,3 +1,8 @@
+2008-03-15  Hans-Peter Nilsson  <hp@axis.com>
+
+       PR middle-end/35595
+       * gcc.c-torture/compile/pr35595.c: New test.
+
 2008-03-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR testsuite/33296
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr35595.c b/gcc/testsuite/gcc.c-torture/compile/pr35595.c
new file mode 100644 (file)
index 0000000..d88cedc
--- /dev/null
@@ -0,0 +1,59 @@
+/* { dg-require-effective-target int32plus } */
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+typedef union
+{
+  float value;
+  __uint32_t word;
+}
+ieee_float_shape_type;
+static const float two23 = 8.3886080000e+06;
+static const float pi = 3.1415927410e+00;
+static const float zero = 0.0000000000e+00;
+static float
+sin_pif (float x)
+{
+  float y = 0;
+  float z = 0;
+  __int32_t n = 0;
+  __int32_t ix = 0;
+  do
+    {
+      ieee_float_shape_type gf_u = { 0 };
+      (ix) = gf_u.word;
+    }
+  while (0);
+  if (z == y)
+    {
+      if (ix < 0x4b800000)
+       {
+         if (ix < 0x4b000000)
+           z = y + two23;
+         do
+           {
+             ieee_float_shape_type gf_u;
+             gf_u.value = (z);
+             (n) = gf_u.word;
+           }
+         while (0);
+       }
+    }
+  if (n == 0)
+    y = __kernel_sinf (pi * y, zero, 0);
+}
+
+float
+__ieee754_lgammaf_r (float x, int *signgamp)
+{
+  float t = 0;
+  __int32_t hx = 0;
+  do
+    {
+      ieee_float_shape_type gf_u = { 0 };
+      (hx) = gf_u.word;
+    }
+  while (0);
+  if (hx < 0)
+    t = sin_pif (x);
+  return 0;
+}