aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/gcc/cp
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.3/gcc/cp')
-rw-r--r--gcc-4.4.3/gcc/cp/call.c3
-rw-r--r--gcc-4.4.3/gcc/cp/mangle.c6
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;