summaryrefslogtreecommitdiff
path: root/gcc/config/aarch64
diff options
context:
space:
mode:
authoryufeng <yufeng@138bc75d-0d04-0410-961f-82ee72b054a4>2012-12-05 10:43:48 +0000
committeryufeng <yufeng@138bc75d-0d04-0410-961f-82ee72b054a4>2012-12-05 10:43:48 +0000
commitea092ff351458a28b85fb434c1bb896e62109d20 (patch)
tree5891ab7cae5753c8b500b00a96ea82264be3a484 /gcc/config/aarch64
parent3a12891883fab1c184e9b715b1548c58c52d1c99 (diff)
downloadgcc-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.c17
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