From 794385023b7a690dfd29611f4f515a709ea69ec8 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Sat, 19 Nov 1994 14:14:18 -0800 Subject: [PATCH] (mips_const_double_ok): Accept VOIDmode not DImode. (mips_move_1word): Accept VOIDmode CONST_DOUBLE. From-SVN: r8526 --- gcc/config/mips/mips.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index e22b76b8e111..aab092e6d070 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)) -- 2.43.5