aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-07-07 16:55:55 -0700
committerJim Wilson <wilson@gcc.gnu.org>1993-07-07 16:55:55 -0700
commitc90fb4e6d45e0101d10f14473df0bbaf322f7f3e (patch)
treef63171ea4a6464156c5f73f78f56c0627411306b
parentd667538bbfbe7ef11f1d79bbfac3ec6a36b24e6d (diff)
downloadgcc-c90fb4e6d45e0101d10f14473df0bbaf322f7f3e.zip
gcc-c90fb4e6d45e0101d10f14473df0bbaf322f7f3e.tar.gz
gcc-c90fb4e6d45e0101d10f14473df0bbaf322f7f3e.tar.bz2
(singlemove_string): Convert SFmode by REAL_VALUE... macros.
From-SVN: r4883
-rw-r--r--gcc/config/sparc/sparc.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 1c46f98..41531fa 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -946,18 +946,15 @@ singlemove_string (operands)
return "ld %1,%0";
else if (GET_CODE (operands[1]) == CONST_DOUBLE)
{
- int i;
- union real_extract u;
- union float_extract { float f; int i; } v;
+ REAL_VALUE_TYPE r;
+ long i;
/* Must be SFmode, otherwise this doesn't make sense. */
if (GET_MODE (operands[1]) != SFmode)
abort ();
- bcopy (&CONST_DOUBLE_LOW (operands[1]), &u, sizeof u);
- v.f = REAL_VALUE_TRUNCATE (SFmode, u.d);
- i = v.i;
-
+ REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
+ REAL_VALUE_TO_TARGET_SINGLE (r, i);
operands[1] = gen_rtx (CONST_INT, VOIDmode, i);
if (CONST_OK_FOR_LETTER_P (i, 'I'))