* config/tc-xtensa.c (update_next_frag_state): Always add a NOP if
authorBob Wilson <bob.wilson@acm.org>
Wed, 10 Nov 2004 22:20:27 +0000 (22:20 +0000)
committerBob Wilson <bob.wilson@acm.org>
Wed, 10 Nov 2004 22:20:27 +0000 (22:20 +0000)
relaxing at the end of a loop.  Don't mark frags as UNREACHABLE or
MAYBE_UNREACHABLE.
(relax_frag_immed): Update call to update_next_frag_state.

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

index 5faf0042f16710f9f84cadce311426a0043aa5c4..1c74fa6da960d86b6e52a419aee98acecfcbb870 100644 (file)
@@ -1,3 +1,10 @@
+2004-11-10  Bob Wilson  <bob.wilson@acm.org>
+
+       * config/tc-xtensa.c (update_next_frag_state): Always add a NOP if
+       relaxing at the end of a loop.  Don't mark frags as UNREACHABLE or
+       MAYBE_UNREACHABLE.
+       (relax_frag_immed): Update call to update_next_frag_state.
+
 2004-11-10  Alan Modra  <amodra@bigpond.net.au>
 
        * obj.h (struct format_ops <app_file>): Add int param.
index 340fb18c62221b01f1314293fcece015260f7a9d..11bd8723850a5dbad3f587c478c42f58bf096b14 100644 (file)
@@ -4535,7 +4535,7 @@ next_frag_format_size (const fragS *fragP)
    switch its state so it will instantiate a NOP.  */
 
 static void
-update_next_frag_state (fragS *fragP, bfd_boolean unreachable)
+update_next_frag_state (fragS *fragP)
 {
   fragS *next_fragP = fragP->fr_next;
   fragS *new_target = NULL;
@@ -4563,36 +4563,17 @@ update_next_frag_state (fragS *fragP, bfd_boolean unreachable)
              && (new_target->fr_subtype == RELAX_MAYBE_DESIRE_ALIGN
                  || new_target->fr_subtype == RELAX_DESIRE_ALIGN));
     }
-  if (unreachable)
-    {
-      if (align_targets)
-       {
-         next_fragP->fr_subtype = RELAX_UNREACHABLE;
-         next_fragP->tc_frag_data.is_unreachable = TRUE;
-         new_target->fr_subtype = RELAX_DESIRE_ALIGN;
-         new_target->tc_frag_data.is_branch_target = TRUE;
-       }
-      while (next_fragP && next_fragP->fr_fix == 0)
-       {
-         if (next_fragP->fr_type == rs_machine_dependent
-             && next_fragP->fr_subtype == RELAX_LOOP_END)
-           {
-             next_fragP->fr_subtype = RELAX_LOOP_END_ADD_NOP;
-             return;
-           }
 
-         next_fragP = next_fragP->fr_next;
-       }
-    }
-  else
+  while (next_fragP && next_fragP->fr_fix == 0)
     {
-      if (align_targets)
+      if (next_fragP->fr_type == rs_machine_dependent
+         && next_fragP->fr_subtype == RELAX_LOOP_END)
        {
-         next_fragP->fr_subtype = RELAX_MAYBE_UNREACHABLE;
-         next_fragP->tc_frag_data.is_unreachable = FALSE;
-         new_target->fr_subtype = RELAX_MAYBE_DESIRE_ALIGN;
-         new_target->tc_frag_data.is_branch_target = FALSE;
+         next_fragP->fr_subtype = RELAX_LOOP_END_ADD_NOP;
+         return;
        }
+
+      next_fragP = next_fragP->fr_next;
     }
 }
 
@@ -9115,13 +9096,8 @@ relax_frag_immed (segT segP,
        }
     }
 
-  /* FIXME: When a negatable branch expands and then contracts in a
-     subsequent pass, update_next_frag_state correctly updates the
-     type of the frag to RELAX_MAYBE_UNREACHABLE, but it doesn't undo
-     any expansion relax_frag_for_align may have expected it to.  For
-     now, change back to only call it when the branch expands.  */
   if (negatable_branch && istack.ninsn > 1)
-    update_next_frag_state (fragP, FALSE /* istack.ninsn > 1 */);      
+    update_next_frag_state (fragP);
 
   return this_text_diff;
 }
This page took 0.033035 seconds and 4 git commands to generate.