summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1994-11-19 22:14:18 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1994-11-19 22:14:18 +0000
commit2d9ea9dc39727a7ea5613658bad6b24a11a4c0f3 (patch)
treeab187c3557cb7def14926fbd3088a4d1122d4ac3 /gcc
parent09850175a0079370485acb9017dda84aaa59cd0d (diff)
downloadgcc-2d9ea9dc39727a7ea5613658bad6b24a11a4c0f3.tar.gz
(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
Diffstat (limited to 'gcc')
-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 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))