aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/struct-ret-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/struct-ret-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/struct-ret-1.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/struct-ret-1.c b/gcc/testsuite/gcc.dg/struct-ret-1.c
new file mode 100644
index 00000000000..f581aad07d2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/struct-ret-1.c
@@ -0,0 +1,45 @@
+/* { dg-do run { target hppa*-*-* } } */
+/* { dg-options { -O2 } { target hppa*-*-* } } */
+typedef struct {
+ int x;
+ int y;
+} point_t;
+
+int main(int argc, char *argv[]);
+int printPoints(point_t a, point_t b);
+point_t toPoint(int x1, int y1);
+
+int
+main(int argc, char *argv[])
+{
+
+ if (printPoints(toPoint(0, 0), toPoint(1000, 1000)) != 1)
+ abort();
+ else
+ exit();
+
+ return 0;
+}
+
+int
+printPoints(point_t a, point_t b)
+{
+ if (a.x != 0
+ || a.y != 0
+ || b.x != 1000
+ || b.y != 1000)
+ return 0;
+ else
+ return 1;
+}
+
+point_t
+toPoint(int x1, int y1)
+{
+ point_t p;
+
+ p.x = x1;
+ p.y = y1;
+
+ return p;
+}