Avoid another -Werror=dangling-pointer
authorAlan Modra <amodra@gmail.com>
Tue, 25 Apr 2023 03:56:12 +0000 (13:26 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 26 Apr 2023 01:02:07 +0000 (10:32 +0930)
write.c:415:7: error: dangling pointer ‘prev_frag’ to ‘dummy’ may be used

* write.c (chain_frchains_together_1): Rewrite loop as a do
while to avoid false positive -Wdangling-pointer.

gas/write.c

index 74a00ea97ae93b9157617806f6bf8fe1a319cf06..573a667da2206b07c4a98f46d700775e5dd8526a 100644 (file)
@@ -380,7 +380,7 @@ chain_frchains_together_1 (segT section, struct frchain *frchp)
   fragS dummy, *prev_frag = &dummy;
   fixS fix_dummy, *prev_fix = &fix_dummy;
 
-  for (; frchp; frchp = frchp->frch_next)
+  do
     {
       prev_frag->fr_next = frchp->frch_root;
       prev_frag = frchp->frch_last;
@@ -393,7 +393,8 @@ chain_frchains_together_1 (segT section, struct frchain *frchp)
          seg_info (section)->fix_tail = frchp->fix_tail;
          prev_fix = frchp->fix_tail;
        }
-    }
+      frchp = frchp->frch_next;
+    } while (frchp);
   gas_assert (prev_frag != &dummy
              && prev_frag->fr_type != 0);
   prev_frag->fr_next = 0;