aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_x.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_x.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_x.c119
1 files changed, 119 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_x.c b/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_x.c
new file mode 100644
index 000000000..d1531b179
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_x.c
@@ -0,0 +1,119 @@
+#include "compat-common.h"
+
+#define T(TYPE) \
+TYPE g01##TYPE, g02##TYPE, g03##TYPE, g04##TYPE; \
+TYPE g05##TYPE, g06##TYPE, g07##TYPE, g08##TYPE; \
+TYPE g09##TYPE, g10##TYPE, g11##TYPE, g12##TYPE; \
+TYPE g13##TYPE, g14##TYPE, g15##TYPE, g16##TYPE; \
+ \
+extern void init##TYPE (TYPE *p, double y); \
+extern void checkg##TYPE (void); \
+extern TYPE test0##TYPE (void); \
+extern TYPE test1##TYPE (TYPE); \
+extern TYPE testva##TYPE (int n, ...); \
+ \
+void \
+testit##TYPE (void) \
+{ \
+ TYPE rslt; \
+ DEBUG_FPUTS (#TYPE); \
+ DEBUG_FPUTS (" init: "); \
+ init##TYPE (&g01##TYPE, 1.0); \
+ init##TYPE (&g02##TYPE, 2.0); \
+ init##TYPE (&g03##TYPE, 3.0); \
+ init##TYPE (&g04##TYPE, 4.0); \
+ init##TYPE (&g05##TYPE, 5.0); \
+ init##TYPE (&g06##TYPE, 6.0); \
+ init##TYPE (&g07##TYPE, 7.0); \
+ init##TYPE (&g08##TYPE, 8.0); \
+ init##TYPE (&g09##TYPE, 9.0); \
+ init##TYPE (&g10##TYPE, 10.0); \
+ init##TYPE (&g11##TYPE, 11.0); \
+ init##TYPE (&g12##TYPE, 12.0); \
+ init##TYPE (&g13##TYPE, 13.0); \
+ init##TYPE (&g14##TYPE, 14.0); \
+ init##TYPE (&g15##TYPE, 15.0); \
+ init##TYPE (&g16##TYPE, 16.0); \
+ checkg##TYPE (); \
+ DEBUG_NL; \
+ DEBUG_FPUTS (#TYPE); \
+ DEBUG_FPUTS (" test0: "); \
+ rslt = test0##TYPE (); \
+ check##TYPE (rslt, 1.0); \
+ DEBUG_NL; \
+ DEBUG_FPUTS (#TYPE); \
+ DEBUG_FPUTS (" test1: "); \
+ rslt = test1##TYPE (g01##TYPE); \
+ check##TYPE (rslt, 1.0); \
+ DEBUG_NL; \
+ DEBUG_FPUTS (#TYPE); \
+ DEBUG_FPUTS (" testva:"); \
+ rslt = testva##TYPE (1, g01##TYPE); \
+ check##TYPE (rslt, 1.0); \
+ rslt = testva##TYPE (5, g01##TYPE, g02##TYPE, \
+ g03##TYPE, g04##TYPE, \
+ g05##TYPE); \
+ check##TYPE (rslt, 5.0); \
+ rslt = testva##TYPE (9, g01##TYPE, g02##TYPE, \
+ g03##TYPE, g04##TYPE, \
+ g05##TYPE, g06##TYPE, \
+ g07##TYPE, g08##TYPE, \
+ g09##TYPE); \
+ check##TYPE (rslt, 9.0); \
+ rslt = testva##TYPE (16, g01##TYPE, g02##TYPE, \
+ g03##TYPE, g04##TYPE, \
+ g05##TYPE, g06##TYPE, \
+ g07##TYPE, g08##TYPE, \
+ g09##TYPE, g10##TYPE, \
+ g11##TYPE, g12##TYPE, \
+ g13##TYPE, g14##TYPE, \
+ g15##TYPE, g16##TYPE); \
+ check##TYPE (rslt, 16.0); \
+ DEBUG_NL; \
+}
+
+#include "fp2-struct-defs.h"
+#include "fp2-struct-check.h"
+
+T(Sfd)
+T(Sfl)
+T(Sdf)
+T(Sdl)
+T(Slf)
+T(Sld)
+T(Sfdl)
+T(Sfld)
+T(Sdfl)
+T(Sdlf)
+T(Slfd)
+T(Sldf)
+
+#undef T
+
+void
+struct_return_10_x ()
+{
+DEBUG_INIT
+
+#define T(TYPE) testit##TYPE ();
+
+T(Sfd);
+T(Sfl);
+T(Sdf);
+T(Sdl);
+T(Slf);
+T(Sld);
+T(Sfdl);
+T(Sfld);
+T(Sdfl);
+T(Sdlf);
+T(Slfd);
+T(Sldf);
+
+DEBUG_FINI
+
+if (fails != 0)
+ return;
+
+#undef T
+}