diff options
author | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-20 15:19:38 +0000 |
---|---|---|
committer | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-20 15:19:38 +0000 |
commit | fb20d2ee2e14f53d4a6e90288392bac8afb31d1f (patch) | |
tree | e0abda07822fe87f536d61e16a682050bcc09cd1 /gcc/testsuite/gcc.target/arm/va_list.c | |
parent | 86482d6bf55db0eea64cf549bf04c6763f4074a4 (diff) | |
download | ppe42-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.c | 25 |
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; +} |