diff mbox

PATCH: PR target/54347: REAL_VALUE_TO_TARGET_LONG_DOUBLE shouldn't be used in i386

Message ID 20120821150527.GA22965@intel.com
State New
Headers show

Commit Message

H.J. Lu Aug. 21, 2012, 3:05 p.m. UTC
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.lu@intel.com>

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

Comments

Uros Bizjak Aug. 22, 2012, 7:02 p.m. UTC | #1
On Tue, Aug 21, 2012 at 5:05 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:

> 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.lu@intel.com>
>
>         PR target/54347
>         * config/i386/i386.c (ix86_split_to_parts): Replace
>         REAL_VALUE_TO_TARGET_LONG_DOUBLE with real_to_target.

OK.

Thanks,
Uros.
diff mbox

Patch

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: