From 2d9ea9dc39727a7ea5613658bad6b24a11a4c0f3 Mon Sep 17 00:00:00 2001 From: wilson Date: Sat, 19 Nov 1994 22:14:18 +0000 Subject: (mips_const_double_ok): Accept VOIDmode not DImode. (mips_move_1word): Accept VOIDmode CONST_DOUBLE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8526 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/config/mips/mips.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'gcc') diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index e22b76b8e11..aab092e6d07 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -478,7 +478,7 @@ mips_const_double_ok (op, mode) if (GET_CODE (op) != CONST_DOUBLE) return FALSE; - if (mode == DImode) + if (mode == VOIDmode) return TRUE; if (mode != SFmode && mode != DFmode) @@ -1016,8 +1016,18 @@ mips_move_1word (operands, insn, unsignedp) } } - else if (code1 == CONST_INT) + else if (code1 == CONST_INT + || (code1 == CONST_DOUBLE + && GET_MODE (op1) == VOIDmode)) { + if (code1 == CONST_DOUBLE) + { + /* This can happen when storing constants into long long + bitfields. Just store the least significant word of + the value. */ + operands[1] = op1 = GEN_INT (CONST_DOUBLE_LOW (op1)); + } + if (INTVAL (op1) == 0) { if (GP_REG_P (regno0)) -- cgit v1.2.1