diff options
author | Yufeng Zhang <yufeng.zhang@arm.com> | 2012-12-05 10:43:48 +0000 |
---|---|---|
committer | Yufeng Zhang <yufeng@gcc.gnu.org> | 2012-12-05 10:43:48 +0000 |
commit | ac2b960fcf50ac868ecc2f407e67d7085bf069de (patch) | |
tree | 5891ab7cae5753c8b500b00a96ea82264be3a484 /gcc | |
parent | 570104dff64cb067e333f4f05dd3ac5d6cd4eeb8 (diff) | |
download | gcc-ac2b960fcf50ac868ecc2f407e67d7085bf069de.zip gcc-ac2b960fcf50ac868ecc2f407e67d7085bf069de.tar.gz gcc-ac2b960fcf50ac868ecc2f407e67d7085bf069de.tar.bz2 |
aarch64.c (aarch64_mangle_type): New function.
gcc/
2012-12-05 Yufeng Zhang <yufeng.zhang@arm.com>
* config/aarch64/aarch64.c (aarch64_mangle_type): New function.
(TARGET_MANGLE_TYPE): Define.
gcc/testsuite/
2012-12-05 Yufeng Zhang <yufeng.zhang@arm.com>
* g++.dg/abi/arm_va_list.C: Also test on aarch64*-*-*.
From-SVN: r194200
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 17 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/abi/arm_va_list.C | 5 |
4 files changed, 29 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aa10fd3..795a1bd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-12-05 Yufeng Zhang <yufeng.zhang@arm.com> + + * config/aarch64/aarch64.c (aarch64_mangle_type): New function. + (TARGET_MANGLE_TYPE): Define. + 2012-12-05 James Greenhalgh <james.greenhalgh@arm.com> * config/aarch64/aarch64-builtins.c diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 971e71f..1cabf7a 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -5862,6 +5862,20 @@ aarch64_preferred_simd_mode (enum machine_mode mode) return word_mode; } +/* Implement TARGET_MANGLE_TYPE. */ + +const char * +aarch64_mangle_type (const_tree type) +{ + /* The AArch64 ABI documents say that "__va_list" has to be + managled as if it is in the "std" namespace. */ + if (lang_hooks.types_compatible_p (CONST_CAST_TREE (type), va_list_type)) + return "St9__va_list"; + + /* Use the default mangling. */ + return NULL; +} + /* Return the equivalent letter for size. */ static unsigned char sizetochar (int size) @@ -6815,6 +6829,9 @@ aarch64_c_mode_for_suffix (char suffix) #undef TARGET_LIBGCC_CMP_RETURN_MODE #define TARGET_LIBGCC_CMP_RETURN_MODE aarch64_libgcc_cmp_return_mode +#undef TARGET_MANGLE_TYPE +#define TARGET_MANGLE_TYPE aarch64_mangle_type + #undef TARGET_MEMORY_MOVE_COST #define TARGET_MEMORY_MOVE_COST aarch64_memory_move_cost diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0bba403e..aa90fd9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2012-12-05 Yufeng Zhang <yufeng.zhang@arm.com> + + * g++.dg/abi/arm_va_list.C: Also test on aarch64*-*-*. + 2012-12-05 James Greenhalgh <james.greenhalgh@arm.com> * gcc.dg/vect/vect-rounding-btrunc.c: New test. diff --git a/gcc/testsuite/g++.dg/abi/arm_va_list.C b/gcc/testsuite/g++.dg/abi/arm_va_list.C index 45a426a..4f6f3a4 100644 --- a/gcc/testsuite/g++.dg/abi/arm_va_list.C +++ b/gcc/testsuite/g++.dg/abi/arm_va_list.C @@ -1,9 +1,10 @@ -// { dg-do compile } +// { dg-do compile { target { aarch64*-*-* arm*-*-* } } } // { dg-options "-Wno-abi" } -// { dg-require-effective-target arm_eabi } +// { dg-require-effective-target arm_eabi { target arm*-*-* } } // AAPCS \S 7.1.4 requires that va_list be a typedef for "struct // __va_list". The mangling is as if it were "std::__va_list". +// AAPCS64 \S 7.1.4 has the same requirement for AArch64 targets. // #include <stdarg.h> typedef __builtin_va_list va_list; |