On Mon, Mar 26, 2012 at 9:25 AM, Richard Guenther
> On Sat, Mar 24, 2012 at 9:25 PM, Steven Bosscher <stevenb....@gmail.com>
>> This patch tightens the conditions on when assemble_external() may be
>> called. It also removes a comment that "most platforms do not define
>> ASM_OUTPUT_EXTERNAL", because hasn't been true since r119764 added a
>> definition of ASM_OUTPUT_EXTERNAL to elfos.h.
>> This is the first step toward addressing PR17982 on the trunk for GCC
>> 4.8. The next step is to change pending_assemble_externals to
>> pending_assemble_visibility, and fold assemble_external_real() back
>> into assemble_external.
>> But first, this patch. I don't think this is very risky, because GCC
>> now always works in unit-at-a-time mode. But I think it would be good
>> to have this on the trunk for a week or so before proceeding.
>> Bootstrapped & tested on x86_64-unknown-linux-gnu. OK for trunk?
> Ok. Though I wonder why callers cannot simply push these decls to
> the pending varpool queue and we might do a final run over it,
> assembling things? [or why we call assemble_external that late at all ...]
The idea is to only call assemble_external as late as possible, i.e.
in final. See PR17982. The pending_assemble_external queue was a hack
/ work-around for a problem with c-decl calling DECL_RTL early. Before
that hack was introduced, any call to assemble_external would set
DECL_ASSEMBLER_NAME and DECL_RTL, and write out something to
asm_out_file, during parsing. I'm trying to clean up that
pending_assemble_external mess, because it causes some nasty compile
time problems (PR 52640).