Avoid another -Werror=dangling-pointer

Message ID ZEiNgqU+7bX6pfwL@squeak.grove.modra.org
State Accepted
Headers
Series Avoid another -Werror=dangling-pointer |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Alan Modra April 26, 2023, 2:33 a.m. UTC
  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.
  

Patch

diff --git a/gas/write.c b/gas/write.c
index 74a00ea97ae..573a667da22 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -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;