diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/mips/mips.md | 12 |
2 files changed, 11 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8d4a911..cd45d8a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-07-15 Richard Sandiford <rsandifo@redhat.com> + + * config/mips/mips.md: In the mips16 li/neg splitter, use SImode for + the destination of the li as well as for the neg. + 2004-07-15 Frank Ch. Eigler <fche@redhat.com> g++/15861 diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index fa096d3..79d9060 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -4748,13 +4748,13 @@ dsrl\t%3,%3,1\n\ [(set (match_operand 0 "register_operand") (match_operand 1 "const_int_operand"))] "TARGET_MIPS16 && reload_completed && INTVAL (operands[1]) < 0" - [(set (match_dup 0) - (match_dup 2)) - (set (match_dup 3) - (neg:SI (match_dup 3)))] + [(set (match_dup 2) + (match_dup 3)) + (set (match_dup 2) + (neg:SI (match_dup 2)))] { - operands[2] = GEN_INT (-INTVAL (operands[1])); - operands[3] = gen_lowpart (SImode, operands[0]); + operands[2] = gen_lowpart (SImode, operands[0]); + operands[3] = GEN_INT (-INTVAL (operands[1])); }) ;; The HI and LO registers are not truly independent. If we move an mthi |