* config/tc-mips.c (macro): For div and udiv, close the
authorJeff Law <law@redhat.com>
Tue, 2 Jun 1998 20:54:35 +0000 (20:54 +0000)
committerJeff Law <law@redhat.com>
Tue, 2 Jun 1998 20:54:35 +0000 (20:54 +0000)
        reorder block as soon as possible.

gas/ChangeLog
gas/config/tc-mips.c

index 4b7c34f..8f831da 100644 (file)
@@ -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>:
index 8dcd4b0..869fdf2 100644 (file)
@@ -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;