aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-10-29 17:18:07 +0000
committerJeff Law <law@gcc.gnu.org>1998-10-29 10:18:07 -0700
commit839366ddec3534593850e1660ead262a8a260158 (patch)
tree2495469f2ea50e61a6bcc1f505aadd7160321678 /gcc
parent60049c8def3e6e834f5cfaf9c0ff6de2e6e083b8 (diff)
downloadgcc-839366ddec3534593850e1660ead262a8a260158.zip
gcc-839366ddec3534593850e1660ead262a8a260158.tar.gz
gcc-839366ddec3534593850e1660ead262a8a260158.tar.bz2
mips.md (reload_{in,out}{si,di}): Emit a USE of HILO at the end of the sequences to reload the HILO register...
* mips.md (reload_{in,out}{si,di}): Emit a USE of HILO at the end of the sequences to reload the HILO register which do not actually reference HILO. From-SVN: r23430
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/mips/mips.md8
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9670a1b..b67825d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Thu Oct 29 18:07:47 1998 Jeffrey A Law (law@cygnus.com)
+
+ * mips.md (reload_{in,out}{si,di}): Emit a USE of HILO at the end
+ of the sequences to reload the HILO register which do not actually
+ reference HILO.
+
Thu Oct 29 12:39:35 1998 Jim Wilson <wilson@cygnus.com>
* c-common.c (c_get_alias_set): Handle ARRAY_REF of union field.
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 18d4a76..847c5fb 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -4803,6 +4803,7 @@ move\\t%0,%z4\\n\\
emit_move_insn (gen_rtx (REG, SImode, 64), scratch);
emit_move_insn (scratch, loword);
emit_move_insn (gen_rtx (REG, SImode, 65), scratch);
+ emit_insn (gen_rtx_USE (VOIDmode, operands[0]));
}
else
{
@@ -4811,6 +4812,7 @@ move\\t%0,%z4\\n\\
emit_insn (gen_ashldi3 (scratch, operands[1], GEN_INT (32)));
emit_insn (gen_ashrdi3 (scratch, scratch, GEN_INT (32)));
emit_insn (gen_movdi (gen_rtx (REG, DImode, 65), scratch));
+ emit_insn (gen_rtx_USE (VOIDmode, operands[0]));
}
DONE;
}
@@ -4822,6 +4824,7 @@ move\\t%0,%z4\\n\\
emit_insn (gen_movdi (operands[0], gen_rtx (REG, DImode, 64)));
emit_insn (gen_ashldi3 (operands[0], operands[0], GEN_INT (32)));
emit_insn (gen_iordi3 (operands[0], operands[0], scratch));
+ emit_insn (gen_rtx_USE (VOIDmode, operands[1]));
DONE;
}
/* This handles moves between a float register and HI/LO. */
@@ -4851,6 +4854,7 @@ move\\t%0,%z4\\n\\
emit_insn (gen_ashldi3 (scratch, operands[1], GEN_INT (32)));
emit_insn (gen_ashrdi3 (scratch, scratch, GEN_INT (32)));
emit_insn (gen_movdi (gen_rtx (REG, DImode, 65), scratch));
+ emit_insn (gen_rtx_USE (VOIDmode, operands[0]));
DONE;
}
if (GET_CODE (operands[1]) == REG && REGNO (operands[1]) == HILO_REGNUM)
@@ -4879,6 +4883,7 @@ move\\t%0,%z4\\n\\
emit_move_insn (hiword, scratch);
emit_move_insn (scratch, gen_rtx (REG, SImode, 65));
emit_move_insn (loword, scratch);
+ emit_insn (gen_rtx_USE (VOIDmode, operands[1]));
}
else if (TARGET_MIPS16 && ! M16_REG_P (REGNO (operands[0])))
{
@@ -4893,6 +4898,7 @@ move\\t%0,%z4\\n\\
emit_insn (gen_ashldi3 (scratch2, scratch2, GEN_INT (32)));
emit_insn (gen_iordi3 (scratch, scratch, scratch2));
emit_insn (gen_movdi (operands[0], scratch));
+ emit_insn (gen_rtx_USE (VOIDmode, operands[1]));
}
else
{
@@ -4902,6 +4908,7 @@ move\\t%0,%z4\\n\\
emit_insn (gen_movdi (operands[0], gen_rtx (REG, DImode, 64)));
emit_insn (gen_ashldi3 (operands[0], operands[0], GEN_INT (32)));
emit_insn (gen_iordi3 (operands[0], operands[0], scratch));
+ emit_insn (gen_rtx_USE (VOIDmode, operands[1]));
}
DONE;
}
@@ -5225,6 +5232,7 @@ move\\t%0,%z4\\n\\
emit_insn (gen_movsi (gen_rtx (REG, SImode, 65), operands[1]));
emit_insn (gen_ashrsi3 (operands[2], operands[1], GEN_INT (31)));
emit_insn (gen_movsi (gen_rtx (REG, SImode, 64), operands[2]));
+ emit_insn (gen_rtx_USE (VOIDmode, operands[0]));
DONE;
}
/* Use a mult to reload LO on mips16. ??? This is hideous. */