diff options
author | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-11-19 22:14:18 +0000 |
---|---|---|
committer | wilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-11-19 22:14:18 +0000 |
commit | 2d9ea9dc39727a7ea5613658bad6b24a11a4c0f3 (patch) | |
tree | ab187c3557cb7def14926fbd3088a4d1122d4ac3 /gcc | |
parent | 09850175a0079370485acb9017dda84aaa59cd0d (diff) | |
download | gcc-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.c | 14 |
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)) |