aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanis Johnson <janis187@us.ibm.com>2009-10-02 16:38:57 +0000
committerJanis Johnson <janis@gcc.gnu.org>2009-10-02 16:38:57 +0000
commit776d00225d39f80820153d811f9711f23b6696fa (patch)
treeb12ee0aca8b72ae718bb2f0b6a6b78817b685188
parentba6f7079726ba4b36c3c66dea28bf85202fa8386 (diff)
downloadgcc-776d00225d39f80820153d811f9711f23b6696fa.zip
gcc-776d00225d39f80820153d811f9711f23b6696fa.tar.gz
gcc-776d00225d39f80820153d811f9711f23b6696fa.tar.bz2
call.c (convert_arg_to_ellipsis): Avoid promoting decimal32 to double.
* call.c (convert_arg_to_ellipsis): Avoid promoting decimal32 to double. * c-c++-common/dfp/func-vararg-alternate-d32.c: Remove XFAIL. * c-c++-common/dfp/func-vararg-dfp.c: Ditto. * c-c++-common/dfp/func-vararg-mixed.c: Ditto. * c-c++-common/dfp/func-vararg-mixed-2.c: Ditto. From-SVN: r152408
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cp/call.c3
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/c-c++-common/dfp/func-vararg-alternate-d32.c1
-rw-r--r--gcc/testsuite/c-c++-common/dfp/func-vararg-dfp.c2
-rw-r--r--gcc/testsuite/c-c++-common/dfp/func-vararg-mixed-2.c1
-rw-r--r--gcc/testsuite/c-c++-common/dfp/func-vararg-mixed.c2
7 files changed, 14 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 00a6055..c689536 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2009-10-02 Janis Johnson <janis187@us.ibm.com>
+
+ * call.c (convert_arg_to_ellipsis): Avoid promoting decimal32
+ to double.
+
2009-10-02 Jakub Jelinek <jakub@redhat.com>
PR debug/41404
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 8c1bb0e..3fc22f2 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -5104,7 +5104,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/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 888064b..b938609 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-02 Janis Johnson <janis187@us.ibm.com>
+
+ * c-c++-common/dfp/func-vararg-alternate-d32.c: Remove XFAIL.
+ * c-c++-common/dfp/func-vararg-dfp.c: Ditto.
+ * c-c++-common/dfp/func-vararg-mixed.c: Ditto.
+ * c-c++-common/dfp/func-vararg-mixed-2.c: Ditto.
+
2009-10-02 Tobias Burnus <burnus@net-b.de>
PR fortran/41479
diff --git a/gcc/testsuite/c-c++-common/dfp/func-vararg-alternate-d32.c b/gcc/testsuite/c-c++-common/dfp/func-vararg-alternate-d32.c
index 225c131..651b7e8 100644
--- a/gcc/testsuite/c-c++-common/dfp/func-vararg-alternate-d32.c
+++ b/gcc/testsuite/c-c++-common/dfp/func-vararg-alternate-d32.c
@@ -1,4 +1,3 @@
-/* { dg-xfail-run-if "32-bit vararg broken" { c++ } { "*" } { "" } } */
/* Simple test of vararg passing for problematic types with and without
double values passed between them. */
diff --git a/gcc/testsuite/c-c++-common/dfp/func-vararg-dfp.c b/gcc/testsuite/c-c++-common/dfp/func-vararg-dfp.c
index 53285df..5add1f7 100644
--- a/gcc/testsuite/c-c++-common/dfp/func-vararg-dfp.c
+++ b/gcc/testsuite/c-c++-common/dfp/func-vararg-dfp.c
@@ -1,5 +1,3 @@
-/* { dg-xfail-run-if "32-bit vararg broken" { c++ } { "*" } { "" } } */
-
/* C99 6.5.2.2 Function calls.
Test passing varargs of the decimal float types. */
diff --git a/gcc/testsuite/c-c++-common/dfp/func-vararg-mixed-2.c b/gcc/testsuite/c-c++-common/dfp/func-vararg-mixed-2.c
index 9c6be63..893cdae 100644
--- a/gcc/testsuite/c-c++-common/dfp/func-vararg-mixed-2.c
+++ b/gcc/testsuite/c-c++-common/dfp/func-vararg-mixed-2.c
@@ -1,5 +1,4 @@
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
-/* { dg-xfail-run-if "32-bit vararg broken" { c++ } { "*" } { "" } } */
/* { dg-options "-mpreferred-stack-boundary=2" } */
/* C99 6.5.2.2 Function calls.
diff --git a/gcc/testsuite/c-c++-common/dfp/func-vararg-mixed.c b/gcc/testsuite/c-c++-common/dfp/func-vararg-mixed.c
index 032a105..1669eaf 100644
--- a/gcc/testsuite/c-c++-common/dfp/func-vararg-mixed.c
+++ b/gcc/testsuite/c-c++-common/dfp/func-vararg-mixed.c
@@ -1,5 +1,3 @@
-/* { dg-xfail-run-if "32-bit vararg broken" { c++ } { "*" } { "" } } */
-
/* C99 6.5.2.2 Function calls.
Test passing varargs of the combination of decimal float types and
other types. */