------- Comment #34 from steven at gcc dot gnu dot org 2010-08-09 21:13 ------- The FIXME here is this one in varasm.c:
------------------------------- /* We delay assemble_external processing until the compilation unit is finalized. This is the best we can do for right now (i.e. stage 3 of GCC 4.0) - the right thing is to delay it all the way to final. See PR 17982 for further discussion. */ static GTY(()) tree pending_assemble_externals; ------------------------------- According to http://gcc.gnu.org/ml/gcc-patches/2004-12/msg00491.html: The *proper* solution to this problem is to remove all calls to assemble_external from the front ends and even the RTL expander; it should only be done from final.c and varasm.c as we are emitting assembly. $ grep assemble_external c* */*.[ch] ada/gcc-interface/*.[ch] calls.c: assemble_external (fndecl); calls.c: assemble_external_libcall (fun); cp/cp-tree.h: so that assemble_external will work properly. So we have this flag to objc/objc-act.c: assemble_external (objc_get_class_decl); objc/objc-act.c: assemble_external (func); objc/objc-act.c: assemble_external (objc_assign_global_decl); objc/objc-act.c: assemble_external (objc_assign_strong_cast_decl); objc/objc-act.c: assemble_external (super_class); I think the ones in calls.c are OK. So only ObjC still calls assemble_external. Iain? -- steven at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |iains at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17982