summaryrefslogtreecommitdiffstats
path: root/gcc/testsuite/gcc.target/arm/va_list.c
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2009-02-20 15:19:38 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2009-02-20 15:19:38 +0000
commitfb20d2ee2e14f53d4a6e90288392bac8afb31d1f (patch)
treee0abda07822fe87f536d61e16a682050bcc09cd1 /gcc/testsuite/gcc.target/arm/va_list.c
parent86482d6bf55db0eea64cf549bf04c6763f4074a4 (diff)
downloadppe42-gcc-fb20d2ee2e14f53d4a6e90288392bac8afb31d1f.tar.gz
ppe42-gcc-fb20d2ee2e14f53d4a6e90288392bac8afb31d1f.zip
2009-02-20 Mark Mitchell <mark@codesourcery.com>
Joseph Myers <joseph@codesourcery.com> * config/arm/arm.c (arm_builtin_va_list): New function. (arm_expand_builtin_va_start): Likewise. (arm_gimplify_va_arg_expr): Likewise. (TARGET_BUILD_BUILTIN_VA_LIST): Define. (TARGET_BUILD_BUILTIN_VA_START): Likewise. (TARGET_BUILD_BUILTIN_VA_ARG_EXPR): Likewise. (va_list_type): New variable. (arm_mangle_type): Mangle va_list_type appropriately. testsuite: * gcc.target/arm/va_list.c: New test. * g++.dg/abi/arm_va_list.C: Likewise. * lib/target-supports.exp (check_effective_target_arm_eabi): New function. * g++.dg/cpp0x/temp-va-arg-bug.C, g++.dg/other/stdarg1.C, g++.dg/warn/miss-format-1.C, g++.dg/warn/miss-format-3.C, g++.dg/warn/miss-format-4.C, g++.dg/warn/miss-format-5.C, g++.dg/warn/miss-format-6.C, g++.old-deja/g++.other/vaarg2.C, g++.old-deja/g++.other/vaarg3.C, g++.old-deja/g++.other/vaarg4.C, g++.old-deja/g++.pt/builtin.C: Use -Wno-abi on ARM EABI targets. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144323 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.target/arm/va_list.c')
-rw-r--r--gcc/testsuite/gcc.target/arm/va_list.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/arm/va_list.c b/gcc/testsuite/gcc.target/arm/va_list.c
new file mode 100644
index 00000000000..b988a0d3365
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/va_list.c
@@ -0,0 +1,25 @@
+/* { dg-do run } */
+/* { dg-require-effective-target arm_eabi } */
+
+#include <stdarg.h>
+#include <stddef.h>
+
+/* AAPCS \S 7.1.4 requires that va_list match the structure shown
+ here */
+typedef struct my_va_list
+{
+ void *ap;
+} my_va_list;
+
+int
+main () {
+ if (sizeof (va_list) != sizeof (my_va_list))
+ return 1;
+ /* This check confirms both that "va_list" has a member named "__ap"
+ and that it is located at the correct position. */
+ if (offsetof (va_list, __ap)
+ != offsetof (my_va_list, ap))
+ return 2;
+
+ return 0;
+}
OpenPOWER on IntegriCloud