aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1994-11-19 14:14:18 -0800
committerJim Wilson <wilson@gcc.gnu.org>1994-11-19 14:14:18 -0800
commit794385023b7a690dfd29611f4f515a709ea69ec8 (patch)
treeab187c3557cb7def14926fbd3088a4d1122d4ac3
parent84ef8e1d45b55183178df3ab711a4909cd6af283 (diff)
downloadgcc-794385023b7a690dfd29611f4f515a709ea69ec8.zip
gcc-794385023b7a690dfd29611f4f515a709ea69ec8.tar.gz
gcc-794385023b7a690dfd29611f4f515a709ea69ec8.tar.bz2
(mips_const_double_ok): Accept VOIDmode not DImode.
(mips_move_1word): Accept VOIDmode CONST_DOUBLE. From-SVN: r8526
-rw-r--r--gcc/config/mips/mips.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index e22b76b..aab092e 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))