This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[testsuite] Re: PowerPC long double stdarg breakage


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]