mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-26 19:44:11 +08:00
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:
parent
af3394d97a
commit
20d9fb448c
12
gas/write.c
12
gas/write.c
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user