diff options
author | Andrew Hsieh <andrewhsieh@google.com> | 2012-09-13 00:20:51 -0700 |
---|---|---|
committer | Andrew Hsieh <andrewhsieh@google.com> | 2012-09-13 00:20:51 -0700 |
commit | 21fa14c8dba6b615564beff6b4e60f2b54f530ae (patch) | |
tree | 7c44e538ece9939c36ba10b9692f4ce02dbca87d /gcc-4.4.3/gcc/cp | |
parent | 5d8cb1af30dc348b89a0dfc4a00ef6ab0b466d66 (diff) | |
download | toolchain_gcc-21fa14c8dba6b615564beff6b4e60f2b54f530ae.tar.gz toolchain_gcc-21fa14c8dba6b615564beff6b4e60f2b54f530ae.tar.bz2 toolchain_gcc-21fa14c8dba6b615564beff6b4e60f2b54f530ae.zip |
Fix GCC 4.4.3 crashes on NEON specific typedef for float
Backport the following: r152030, r152242, r152408, and r153858
Related issue:
http://code.google.com/p/android/issues/detail?id=34613
Change-Id: I44563f618220fbe9e01915962fe411ac2f385bbb
Diffstat (limited to 'gcc-4.4.3/gcc/cp')
-rw-r--r-- | gcc-4.4.3/gcc/cp/call.c | 3 | ||||
-rw-r--r-- | gcc-4.4.3/gcc/cp/mangle.c | 6 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc-4.4.3/gcc/cp/call.c b/gcc-4.4.3/gcc/cp/call.c index 4eb1974c0..9a1953e8c 100644 --- a/gcc-4.4.3/gcc/cp/call.c +++ b/gcc-4.4.3/gcc/cp/call.c @@ -4948,7 +4948,8 @@ convert_arg_to_ellipsis (tree arg) promoted type before the call. */ if (TREE_CODE (TREE_TYPE (arg)) == REAL_TYPE && (TYPE_PRECISION (TREE_TYPE (arg)) - < TYPE_PRECISION (double_type_node))) + < TYPE_PRECISION (double_type_node)) + && !DECIMAL_FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (arg)))) arg = convert_to_real (double_type_node, arg); else if (INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (arg))) arg = perform_integral_promotions (arg); diff --git a/gcc-4.4.3/gcc/cp/mangle.c b/gcc-4.4.3/gcc/cp/mangle.c index 0d07082d2..c7c223913 100644 --- a/gcc-4.4.3/gcc/cp/mangle.c +++ b/gcc-4.4.3/gcc/cp/mangle.c @@ -1851,6 +1851,12 @@ write_builtin_type (tree type) write_char ('d'); else if (type == long_double_type_node) write_char ('e'); + else if (type == dfloat32_type_node) + write_string ("Df"); + else if (type == dfloat64_type_node) + write_string ("Dd"); + else if (type == dfloat128_type_node) + write_string ("De"); else gcc_unreachable (); break; |