summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-2.c')
-rw-r--r--gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-2.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-2.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-2.c
new file mode 100644
index 0000000000..8df4d585c4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-2.c
@@ -0,0 +1,18 @@
+/* Check calling convention in the vector ABI. */
+
+/* { dg-do compile { target { s390*-*-* } } } */
+/* { dg-options "-O3 -mzarch -march=z13 -Wno-implicit-function-declaration" } */
+
+
+typedef long v2di __attribute__((vector_size(16)));
+extern v2di foo1 (int, v2di);
+extern v2di foo2 (int, int);
+extern v2di foo3 (int, ...);
+
+v2di bar1 (int a) { return foo2 (1, a); }
+v2di bar2 (int a) { return foo3 (1, a); }
+v2di bar3 (v2di a) { return foo1 (1, a); }
+v2di bar4 (v2di a) { return foo3 (1, a); }
+
+int bar5 (int a) { return foo4 (1, a); }
+int bar6 (v2di a) { return foo4 (1, a); } /* { dg-error "Vector argument passed to unprototyped function" } */