Hi,

long double may not be 80-bit on i386.  We can't use
REAL_VALUE_TO_TARGET_LONG_DOUBLE for XFmode.  This patch replaces
REAL_VALUE_TO_TARGET_LONG_DOUBLE with real_to_target.  OK to install?

Thanks.

H.J.
---
2012-08-21  H.J. Lu  <hongjiu...@intel.com>

        PR target/54347
        * config/i386/i386.c (ix86_split_to_parts): Replace
        REAL_VALUE_TO_TARGET_LONG_DOUBLE with real_to_target.

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 5da4da2..a6fc45b 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -20743,7 +20743,9 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum 
machine_mode mode)
                  parts[2] = gen_int_mode (l[2], SImode);
                  break;
                case XFmode:
-                 REAL_VALUE_TO_TARGET_LONG_DOUBLE (r, l);
+                 /* We can't use REAL_VALUE_TO_TARGET_LONG_DOUBLE since
+                    long double may not be 80-bit.  */
+                 real_to_target (l, &r, mode);
                  parts[2] = gen_int_mode (l[2], SImode);
                  break;
                case DFmode:

Reply via email to