From 6fc489508d9adb71cc950e0168a601b7c2a0d2ad Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Wed, 10 Jul 1996 22:04:32 +0000 Subject: [PATCH] Fix last change From-SVN: r12422 --- gcc/config/rs6000/rs6000.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 7b7896001b4..921bc18664e 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))); -- 2.30.2