aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1996-07-10 22:04:32 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1996-07-10 22:04:32 +0000
commit6fc489508d9adb71cc950e0168a601b7c2a0d2ad (patch)
tree38afd7e4f5a093d4bcbe87f1c558b7556b6f560e /gcc
parentc4c4037309a400397313e01b3fd7c38ae2264acf (diff)
downloadgcc-6fc489508d9adb71cc950e0168a601b7c2a0d2ad.zip
gcc-6fc489508d9adb71cc950e0168a601b7c2a0d2ad.tar.gz
gcc-6fc489508d9adb71cc950e0168a601b7c2a0d2ad.tar.bz2
Fix last change
From-SVN: r12422
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 7b78960..921bc18 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -632,12 +632,19 @@ num_insns_constant (op, mode)
rtx op;
enum machine_mode mode;
{
- if (mode != SImode && mode != DImode && mode != SFmode && mode != DFmode)
- abort ();
-
if (GET_CODE (op) == CONST_INT)
return num_insns_constant_wide (INTVAL (op));
+ else if (GET_CODE (op) == CONST_DOUBLE && mode == SFmode)
+ {
+ long l;
+ REAL_VALUE_TYPE rv;
+
+ REAL_VALUE_FROM_CONST_DOUBLE (rv, op);
+ REAL_VALUE_TO_TARGET_SINGLE (rv, l);
+ return num_insns_constant_wide ((HOST_WIDE_INT)l);
+ }
+
else if (GET_CODE (op) == CONST_DOUBLE && TARGET_32BIT)
return (num_insns_constant_wide (CONST_DOUBLE_LOW (op))
+ num_insns_constant_wide (CONST_DOUBLE_HIGH (op)));