diff options
author | Michael Meissner <meissner@gcc.gnu.org> | 1996-07-10 22:04:32 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 1996-07-10 22:04:32 +0000 |
commit | 6fc489508d9adb71cc950e0168a601b7c2a0d2ad (patch) | |
tree | 38afd7e4f5a093d4bcbe87f1c558b7556b6f560e /gcc | |
parent | c4c4037309a400397313e01b3fd7c38ae2264acf (diff) | |
download | gcc-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.c | 13 |
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))); |