diff options
author | yufeng <yufeng@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-05 10:43:48 +0000 |
---|---|---|
committer | yufeng <yufeng@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-05 10:43:48 +0000 |
commit | ea092ff351458a28b85fb434c1bb896e62109d20 (patch) | |
tree | 5891ab7cae5753c8b500b00a96ea82264be3a484 /gcc/config/aarch64 | |
parent | 3a12891883fab1c184e9b715b1548c58c52d1c99 (diff) | |
download | gcc-ea092ff351458a28b85fb434c1bb896e62109d20.tar.gz |
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*-*-*.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194200 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/aarch64')
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 971e71f1ef4..1cabf7ac617 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 |