* config/tc-mips.c (append_insn): Undo last change. Instead add
authorDavid Ung <davidu@mips.com>
Wed, 7 Sep 2005 11:39:17 +0000 (11:39 +0000)
committerDavid Ung <davidu@mips.com>
Wed, 7 Sep 2005 11:39:17 +0000 (11:39 +0000)
guard to suppress calling frag_grow if the current instruction is
one that allows a delay slot.

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

index 55fff2e2cabc8466b0819cb02dfee690fb2c9fbe..1140fec60fb104feddff811ab35ab6c3b49af870 100644 (file)
@@ -1,3 +1,9 @@
+2005-09-07  David Ung  <davidu@mips.com>
+
+       * config/tc-mips.c (append_insn): Undo last change.  Instead add
+       guard to suppress calling frag_grow if the current instruction is
+       one that allows a delay slot.
+
 2005-09-06  Chao-ying Fu  <fu@mips.com>
 
        * config/tc-mips.c (mips_set_options): Add ase_mt for MT instructions.
index db1fec5a5cc4fe38402eb53dfd78cf2cdf495544..b4b76f018b56675f835eea6d695081f0f077eade 100644 (file)
@@ -2312,10 +2312,11 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
   else if (mips_opts.mips16
           && ! ip->use_extend
           && *reloc_type != BFD_RELOC_MIPS16_JMP)
-    {
-      /* Make sure there is enough room to swap this instruction with
-         a following jump instruction.  */
-      frag_grow (6);
+    {     
+      if ((pinfo & INSN_UNCOND_BRANCH_DELAY) == 0)
+       /* Make sure there is enough room to swap this instruction with
+          a following jump instruction.  */
+       frag_grow (6);
       add_fixed_insn (ip);
     }
   else
@@ -2707,22 +2708,9 @@ append_insn (struct mips_cl_insn *ip, expressionS *address_expr,
              struct mips_cl_insn delay = history[0];
              if (mips_opts.mips16)
                {
-                 if (delay.frag == ip->frag)
-                   {
-                     move_insn (ip, delay.frag, delay.where);
-                     move_insn (&delay, ip->frag, delay.where 
-                                + insn_length (ip));
-                   }
-                 else if (insn_length (ip) == insn_length (&delay))
-                   {
-                     move_insn (&delay, ip->frag, ip->where);
-                     move_insn (ip, history[0].frag, history[0].where);
-                   }
-                 else
-                   {
-                     add_fixed_insn (NOP_INSN);
-                     delay = *NOP_INSN;
-                   }
+                 know (delay.frag == ip->frag);
+                  move_insn (ip, delay.frag, delay.where);
+                 move_insn (&delay, ip->frag, ip->where + insn_length (ip));
                }
              else if (relaxed_branch)
                {
This page took 0.036598 seconds and 4 git commands to generate.