Hi,

As discussed in PR105334, this patch is to add the test coverage for
the two recent fixes r12-8091 and r12-8226 from Segher, aix is skipped
since it takes soft-float and long-double-128 incompatible.

I noticed the referred test case pack02.c skips if powerpc*-*-darwin*,
but it's for do-run and I didn't have one machine to test that triple,
so I didn't add that and hope it's unnecessary.

Tested on powerpc64-linux-gnu P8, powerpc64le-linux-gnu P9/P10 and
powerpc-ibm-aix7.2.0.0.

Is ok for trunk?

BR,
Kewen
-----
gcc/testsuite/ChangeLog:

        PR target/105334
        * gcc.target/powerpc/pr105334.c: New test.
---
 gcc/testsuite/gcc.target/powerpc/pr105334.c | 31 +++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/powerpc/pr105334.c

diff --git a/gcc/testsuite/gcc.target/powerpc/pr105334.c 
b/gcc/testsuite/gcc.target/powerpc/pr105334.c
new file mode 100644
index 00000000000..7664e033dd0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr105334.c
@@ -0,0 +1,31 @@
+/* Skip this on aix, since it takes soft-float and long-double-128
+   incompatible and warns it.  */
+/* { dg-skip-if "aix long-double-128 soft-float" { powerpc*-*-aix* } } */
+/* { dg-options "-mlong-double-128 -msoft-float" } */
+
+/* Verify there is no ICE.  */
+
+#include <stddef.h>
+#include <stdlib.h>
+#include <math.h>
+
+#define PACK __builtin_pack_ibm128
+#define UNPACK __builtin_unpack_ibm128
+#define LDOUBLE __ibm128
+
+extern LDOUBLE bar (LDOUBLE);
+
+int
+main (void)
+{
+  double high = pow (2.0, 60);
+  double low = 2.0;
+  LDOUBLE a = ((LDOUBLE) high) + ((LDOUBLE) low);
+  double x0 = UNPACK (a, 0);
+  double x1 = UNPACK (a, 1);
+  LDOUBLE b = PACK (x0, x1);
+  LDOUBLE c = bar (b);
+
+  return c > a;
+}
+
--
2.27.0

Reply via email to