This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[testsuite] Re: PowerPC long double stdarg breakage
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 20 Apr 2006 12:27:32 +0930
- Subject: [testsuite] Re: PowerPC long double stdarg breakage
- References: <20060420015741.GE27430@bubble.grove.modra.org>
On Thu, Apr 20, 2006 at 11:27:41AM +0930, Alan Modra wrote:
> This patch fixes a bug in the new ppc long double support.
And this adds some new tests that should help prevent this happening
again. OK mainline?
* gcc.dg/compat/scalar-by-value-5.c: New.
* gcc.dg/compat/scalar-by-value-5_main.c: New.
* gcc.dg/compat/scalar-by-value-5_x.c: New.
* gcc.dg/compat/scalar-by-value-5_y.c: New.
* gcc.dg/compat/scalar-by-value-6.c: New.
* gcc.dg/compat/scalar-by-value-6_main.c: New.
* gcc.dg/compat/scalar-by-value-6_x.c: New.
* gcc.dg/compat/scalar-by-value-6_y.c: New.
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-5.c
===================================================================
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-5.c (revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5.c (revision 0)
@@ -0,0 +1,16 @@
+TEST_FUNCS (longlong_i, long long, int,
+ 1234LL, -987)
+TEST_FUNCS (longlong_d, long long, double,
+ 1234LL, -987.0)
+TEST_FUNCS (complexint_i, _Complex int, int,
+ 1234 + 567i, -987)
+TEST_FUNCS (complexint_d, _Complex int, double,
+ 1234 + 567i, -987.0)
+TEST_FUNCS (complexdouble_i, _Complex double, int,
+ 1234.0 + 567.0i, -987)
+TEST_FUNCS (complexdouble_d, _Complex double, double,
+ 1234.0 + 567.0i, -987.0)
+TEST_FUNCS (complexlonglong_i, _Complex long long, int,
+ 1234LL + 567LLi, -987)
+TEST_FUNCS (complexlonglong_d, _Complex long long, double,
+ 1234LL + 567LLi, -987.0)
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-5_main.c
===================================================================
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-5_main.c (revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5_main.c (revision 0)
@@ -0,0 +1,30 @@
+/* Test that function args can be passed in various positions to both fixed
+ and variable arg functions. */
+/* { dg-options "-O" } */
+
+extern void exit (int);
+extern void longlong_i_doit (void);
+extern void longlong_d_doit (void);
+extern void complexint_i_doit (void);
+extern void complexint_d_doit (void);
+extern void complexdouble_i_doit (void);
+extern void complexdouble_d_doit (void);
+extern void complexlonglong_i_doit (void);
+extern void complexlonglong_d_doit (void);
+
+int main (void)
+{
+ longlong_i_doit ();
+ longlong_d_doit ();
+#ifndef SKIP_COMPLEX_INT
+ complexint_i_doit ();
+ complexint_d_doit ();
+#endif
+ complexdouble_i_doit ();
+ complexdouble_d_doit ();
+#ifndef SKIP_COMPLEX_INT
+ complexlonglong_i_doit ();
+ complexlonglong_d_doit ();
+#endif
+ exit (0);
+}
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-5_x.c
===================================================================
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-5_x.c (revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5_x.c (revision 0)
@@ -0,0 +1,2 @@
+#include "scalar-by-value-x.h"
+#include "scalar-by-value-5.c"
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-5_y.c
===================================================================
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-5_y.c (revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-5_y.c (revision 0)
@@ -0,0 +1,2 @@
+#include "scalar-by-value-y.h"
+#include "scalar-by-value-5.c"
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-6.c
===================================================================
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-6.c (revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6.c (revision 0)
@@ -0,0 +1,4 @@
+TEST_FUNCS (longdouble_i, long double, int, d, -987)
+TEST_FUNCS (longdouble_d, long double, double, d, -987.0)
+TEST_FUNCS (complexlongdouble_i, _Complex long double, int, cd, -987)
+TEST_FUNCS (complexlongdouble_d, _Complex long double, double, cd, -987.0)
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-6_main.c
===================================================================
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-6_main.c (revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6_main.c (revision 0)
@@ -0,0 +1,19 @@
+/* Test that function args can be passed in various positions to both fixed
+ and variable arg functions. */
+/* { dg-options "-O" } */
+/* { dg-options "-O -mlong-double-128" { target powerpc*-*-* } } */
+
+extern void exit (int);
+extern void longdouble_i_doit (void);
+extern void longdouble_d_doit (void);
+extern void complexlongdouble_i_doit (void);
+extern void complexlongdouble_d_doit (void);
+
+int main (void)
+{
+ longdouble_i_doit ();
+ longdouble_d_doit ();
+ complexlongdouble_i_doit ();
+ complexlongdouble_d_doit ();
+ exit (0);
+}
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-6_x.c
===================================================================
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-6_x.c (revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6_x.c (revision 0)
@@ -0,0 +1,6 @@
+#include "scalar-by-value-x.h"
+
+extern long double d;
+extern _Complex long double cd;
+
+#include "scalar-by-value-6.c"
Index: gcc/testsuite/gcc.dg/compat/scalar-by-value-6_y.c
===================================================================
--- gcc/testsuite/gcc.dg/compat/scalar-by-value-6_y.c (revision 0)
+++ gcc/testsuite/gcc.dg/compat/scalar-by-value-6_y.c (revision 0)
@@ -0,0 +1,7 @@
+#define USE_MEMCMP 1
+#include "scalar-by-value-y.h"
+
+long double d = 1234.0L + 0x0.abcdp-70L;
+_Complex long double cd = 234.0L + 0x0.abcp-70L + 567.0Li +0x0defp-70Li;
+
+#include "scalar-by-value-6.c"
--
Alan Modra
IBM OzLabs - Linux Technology Centre