Commit ac2b960f by Yufeng Zhang Committed by Yufeng Zhang

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
parent 570104df
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> 2012-12-05 James Greenhalgh <james.greenhalgh@arm.com>
* config/aarch64/aarch64-builtins.c * config/aarch64/aarch64-builtins.c
...@@ -5862,6 +5862,20 @@ aarch64_preferred_simd_mode (enum machine_mode mode) ...@@ -5862,6 +5862,20 @@ aarch64_preferred_simd_mode (enum machine_mode mode)
return word_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. */ /* Return the equivalent letter for size. */
static unsigned char static unsigned char
sizetochar (int size) sizetochar (int size)
...@@ -6815,6 +6829,9 @@ aarch64_c_mode_for_suffix (char suffix) ...@@ -6815,6 +6829,9 @@ aarch64_c_mode_for_suffix (char suffix)
#undef TARGET_LIBGCC_CMP_RETURN_MODE #undef TARGET_LIBGCC_CMP_RETURN_MODE
#define TARGET_LIBGCC_CMP_RETURN_MODE aarch64_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 #undef TARGET_MEMORY_MOVE_COST
#define TARGET_MEMORY_MOVE_COST aarch64_memory_move_cost #define TARGET_MEMORY_MOVE_COST aarch64_memory_move_cost
......
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> 2012-12-05 James Greenhalgh <james.greenhalgh@arm.com>
* gcc.dg/vect/vect-rounding-btrunc.c: New test. * gcc.dg/vect/vect-rounding-btrunc.c: New test.
......
// { dg-do compile } // { dg-do compile { target { aarch64*-*-* arm*-*-* } } }
// { dg-options "-Wno-abi" } // { 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 // 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". // __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> // #include <stdarg.h>
typedef __builtin_va_list va_list; typedef __builtin_va_list va_list;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment