Add another test case to exercise the previous MODE_PARTIAL_INT change.
authorPeter Bergner <bergner@linux.ibm.com>
Fri, 8 Nov 2019 00:34:09 +0000 (00:34 +0000)
committerPeter Bergner <bergner@gcc.gnu.org>
Fri, 8 Nov 2019 00:34:09 +0000 (18:34 -0600)
gcc/testsuite/
PR other/92090
* gcc.target/powerpc/pr92090-2.c: New test.

From-SVN: r277942

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/pr92090-2.c [new file with mode: 0644]

index c0b019d4b14f4960f80457df067732e7f13031e1..e1a8da60d43f13afcb5142fb6399eff0a0172379 100644 (file)
@@ -1,3 +1,8 @@
+2019-11-07  Peter Bergner <bergner@linux.ibm.com>
+
+       PR other/92090
+       * gcc.target/powerpc/pr92090-2.c: New test.
+
 2019-11-07  Joseph Myers  <joseph@codesourcery.com>
 
        * gcc.dg/tm/attrs-1.c: New test.
diff --git a/gcc/testsuite/gcc.target/powerpc/pr92090-2.c b/gcc/testsuite/gcc.target/powerpc/pr92090-2.c
new file mode 100644 (file)
index 0000000..8922a53
--- /dev/null
@@ -0,0 +1,44 @@
+/* { dg-do compile } */
+/* { dg-options "-mdejagnu-cpu=power8 -Os -mbig -w" } */
+
+/* Verify that we don't ICE.  */
+
+int a;
+static _Atomic long double b, c, d, m;
+double n;
+extern int foo (void);
+extern void bar (int, int, int, int);
+
+void
+bug (void)
+{
+  b = 1.79769313486231580793728971405301199e308L;
+  for (int i = 0; i < 10000; i++)
+    if (__builtin_isinf (n))
+      b;
+  c = 1;
+  int e, f, g, h;
+  while (a)
+    ;
+  for (int i; i; i++)
+    {
+      double j = c /= foo ();
+      if (__builtin_isinf (j))
+       {
+         if (foo == 1 << 31)
+           e++;
+         f++;
+         c = 0;
+       }
+      else
+       {
+         if (foo == 1 << 30)
+           g++;
+         h++;
+         c = 1;
+       }
+    }
+  bar (e, f, g, h);
+  d = 1.79769313486231580793728971405301199e308L;
+  m = 1;
+}