aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_y.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_y.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_y.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_y.c b/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_y.c
new file mode 100644
index 000000000..dcc0b93c1
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-return-10_y.c
@@ -0,0 +1,79 @@
+#include <stdarg.h>
+
+#include "compat-common.h"
+
+
+#include "fp2-struct-defs.h"
+#include "fp2-struct-init.h"
+
+#define T(TYPE) \
+extern TYPE g01##TYPE, g02##TYPE, g03##TYPE, g04##TYPE; \
+extern TYPE g05##TYPE, g06##TYPE, g07##TYPE, g08##TYPE; \
+extern TYPE g09##TYPE, g10##TYPE, g11##TYPE, g12##TYPE; \
+extern TYPE g13##TYPE, g14##TYPE, g15##TYPE, g16##TYPE; \
+ \
+extern void check##TYPE (TYPE x, double y); \
+ \
+void \
+checkg##TYPE (void) \
+{ \
+ check##TYPE (g01##TYPE, 1.0); \
+ check##TYPE (g02##TYPE, 2.0); \
+ check##TYPE (g03##TYPE, 3.0); \
+ check##TYPE (g04##TYPE, 4.0); \
+ check##TYPE (g05##TYPE, 5.0); \
+ check##TYPE (g06##TYPE, 6.0); \
+ check##TYPE (g07##TYPE, 7.0); \
+ check##TYPE (g08##TYPE, 8.0); \
+ check##TYPE (g09##TYPE, 9.0); \
+ check##TYPE (g10##TYPE, 10.0); \
+ check##TYPE (g11##TYPE, 11.0); \
+ check##TYPE (g12##TYPE, 12.0); \
+ check##TYPE (g13##TYPE, 13.0); \
+ check##TYPE (g14##TYPE, 14.0); \
+ check##TYPE (g15##TYPE, 15.0); \
+ check##TYPE (g16##TYPE, 16.0); \
+} \
+ \
+TYPE \
+test0##TYPE (void) \
+{ \
+ return g01##TYPE; \
+} \
+ \
+TYPE \
+test1##TYPE (TYPE x01) \
+{ \
+ return x01; \
+} \
+ \
+TYPE \
+testva##TYPE (int n, ...) \
+{ \
+ int i; \
+ TYPE rslt; \
+ va_list ap; \
+ if (1) \
+ { \
+ va_start (ap, n); \
+ for (i = 0; i < n; i++) \
+ { \
+ rslt = va_arg (ap, TYPE); \
+ } \
+ va_end (ap); \
+ } \
+ return rslt; \
+}
+
+T(Sfd)
+T(Sfl)
+T(Sdf)
+T(Sdl)
+T(Slf)
+T(Sld)
+T(Sfdl)
+T(Sfld)
+T(Sdfl)
+T(Sdlf)
+T(Slfd)
+T(Sldf)