* call.c (convert_arg_to_ellipsis): Avoid promoting decimal32
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Oct 2009 16:38:57 +0000 (16:38 +0000)
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Oct 2009 16:38:57 +0000 (16:38 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152408 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cp/call.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/dfp/func-vararg-alternate-d32.c
gcc/testsuite/c-c++-common/dfp/func-vararg-dfp.c
gcc/testsuite/c-c++-common/dfp/func-vararg-mixed-2.c
gcc/testsuite/c-c++-common/dfp/func-vararg-mixed.c

index 00a6055..c689536 100644 (file)
@@ -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
index 8c1bb0e..3fc22f2 100644 (file)
@@ -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);
index 888064b..b938609 100644 (file)
@@ -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
index 225c131..651b7e8 100644 (file)
@@ -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.  */
 
index 53285df..5add1f7 100644 (file)
@@ -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.  */
 
index 9c6be63..893cdae 100644 (file)
@@ -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.
index 032a105..1669eaf 100644 (file)
@@ -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.  */