aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-mips.c20
2 files changed, 22 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 4b7c34f..8f831da 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jun 2 14:52:56 1998 Jeffrey A Law (law@cygnus.com)
+
+ * config/tc-mips.c (macro): For div and udiv, close the
+ reorder block as soon as possible.
+
Tue Jun 2 15:36:13 1998 Ian Lance Taylor <ian@cygnus.com>
From Matt Semersky <matts@scd.hp.com>:
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 8dcd4b0..869fdf2 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -3998,13 +3998,22 @@ macro (ip)
(int) BFD_RELOC_HI16);
}
if (mips_trap)
- macro_build ((char *) NULL, &icnt, NULL, "teq", "s,t", sreg, AT);
+ {
+ macro_build ((char *) NULL, &icnt, NULL, "teq", "s,t", sreg, AT);
+ /* We want to close the noreorder block as soon as possible, so
+ that later insns are available for delay slot filling. */
+ --mips_opts.noreorder;
+ }
else
{
expr1.X_add_number = 8;
macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", sreg, AT);
macro_build ((char *) NULL, &icnt, NULL, "nop", "", 0);
+ /* We want to close the noreorder block as soon as possible, so
+ that later insns are available for delay slot filling. */
+ --mips_opts.noreorder;
+
/* start-sanitize-r5900 */
if (mips_5900)
macro_build ((char *) NULL, &icnt, NULL, "break", "B", 6);
@@ -4012,7 +4021,6 @@ macro (ip)
/* end-sanitize-r5900 */
macro_build ((char *) NULL, &icnt, NULL, "break", "c", 6);
}
- --mips_opts.noreorder;
macro_build ((char *) NULL, &icnt, NULL, s, "d", dreg);
break;
@@ -4121,12 +4129,19 @@ macro (ip)
{
macro_build ((char *) NULL, &icnt, NULL, "teq", "s,t", treg, 0);
macro_build ((char *) NULL, &icnt, NULL, s, "z,s,t", sreg, treg);
+ /* We want to close the noreorder block as soon as possible, so
+ that later insns are available for delay slot filling. */
+ --mips_opts.noreorder;
}
else
{
expr1.X_add_number = 8;
macro_build ((char *) NULL, &icnt, &expr1, "bne", "s,t,p", treg, 0);
macro_build ((char *) NULL, &icnt, NULL, s, "z,s,t", sreg, treg);
+
+ /* We want to close the noreorder block as soon as possible, so
+ that later insns are available for delay slot filling. */
+ --mips_opts.noreorder;
/* start-sanitize-r5900 */
if (mips_5900)
macro_build ((char *) NULL, &icnt, NULL, "break", "B", 7);
@@ -4134,7 +4149,6 @@ macro (ip)
/* end-sanitize-r5900 */
macro_build ((char *) NULL, &icnt, NULL, "break", "c", 7);
}
- --mips_opts.noreorder;
macro_build ((char *) NULL, &icnt, NULL, s2, "d", dreg);
return;