for (s = all_segs; s; s = s->next)
     {
-      struct line_subseg *lss = s->head;
-      struct line_entry *e, *next;
+      struct line_subseg *lss;
 
-      for (e = lss->head; e; e = next)
+      for (lss = s->head; lss; lss = lss->next)
        {
-         know (e->loc.filenum == -1u);
-         next = e->next;
-         free (e);
-       }
+         struct line_entry *e, *next;
+
+         for (e = lss->head; e; e = next)
+           {
+             know (e->loc.filenum == -1u);
+             next = e->next;
+             free (e);
+           }
 
-      lss->head = NULL;
-      lss->ptail = &lss->head;
-      lss->pmove_tail = &lss->head;
+         lss->head = NULL;
+         lss->ptail = &lss->head;
+         lss->pmove_tail = &lss->head;
+       }
     }
 }
 
                             SEC_READONLY | SEC_DEBUGGING | SEC_OCTETS);
     }
 
+  for (s = all_segs; s; s = s->next)
+    {
+      struct line_subseg *lss;
+
+      for (lss = s->head; lss; lss = lss->next)
+       if (lss->head)
+         do_allocate_filenum (lss->head);
+    }
+
   /* For each subsection, chain the debug entries together.  */
   for (s = all_segs; s; s = s->next)
     {
       struct line_subseg *lss = s->head;
       struct line_entry **ptail = lss->ptail;
 
-      if (lss->head && SEG_NORMAL (s->seg))
-       do_allocate_filenum (lss->head);
-
       /* Reset the initial view of the first subsection of the
         section.  */
       if (lss->head && lss->head->loc.u.view)