gas: move had_errors() invocation in finishing of subsegs

Invoking this repeatedly in an inner loop is not only inefficient, but
may lead to inconsistencies in e.g. the listings that the original
comment author cared about. (Accept potential inconsistencies across
distinct sections though, to cover all invocations of the function.)
This commit is contained in:
Jan Beulich 2024-11-18 11:37:31 +01:00
parent af3394d97a
commit 20d9fb448c

View File

@ -1876,6 +1876,12 @@ subsegs_finish_section (asection *s)
if (!seginfo)
return;
/* This now gets called even if we had errors. In that case, any alignment
is meaningless, and, moreover, will look weird if we are generating a
listing. */
if (had_errors ())
do_not_pad_sections_to_alignment = 1;
for (frchainP = seginfo->frchainP;
frchainP != NULL;
frchainP = frchainP->frch_next)
@ -1884,12 +1890,6 @@ subsegs_finish_section (asection *s)
subseg_set (s, frchainP->frch_subseg);
/* This now gets called even if we had errors. In that case,
any alignment is meaningless, and, moreover, will look weird
if we are generating a listing. */
if (had_errors ())
do_not_pad_sections_to_alignment = 1;
alignment = SUB_SEGMENT_ALIGN (now_seg, frchainP);
if ((bfd_section_flags (now_seg) & (SEC_MERGE | SEC_STRINGS))
&& now_seg->entsize)