> On Fri, Dec 21, 2012 at 10:50:58AM +0100, Richard Biener wrote: > > On Fri, Dec 21, 2012 at 6:33 AM, Alexandre Oliva <aol...@redhat.com> wrote: > > > libmudflap emits a global initializer that registers memory ranges for > > > global data symbols. However, even if IPA decides not to emit a symbol > > > because it's unused, we'd still emit registration sequences for them in > > > some cases, which, in the PR testcase, would result in TOC references to > > > the undefined symbols. > > > > > > This patch fixes the problem, avoiding registration for symbols that are > > > not present in the varpool. > > > > > > Regstrapped on x86_64-linux-gnu and i686-linux-gnu; I've also verified > > > that it removes the TOC references on a ppc64-linux-gnu cross. > > > > > > Ok to install? > > > > Hmm, I think that at this point of the compilation you are looking for > > TREE_ASM_WRITTEN instead. I'm not sure we will never end up > > having a symtab node that not ends up being emitted.
Ones representing external vars, but that probably doesn't count. Also for constant pool the decision whether to emit or not is still done behind symtab's back. All other nodes should be removed. > > Yeah, asan.c also tests TREE_ASM_WRITTEN and doesn't register > !TREE_ASM_WRITTEN decls for instrumentation. Note that FEs sometimes play dirty games setting TREE_ASM_WRITTEN to true to avoid fake symbols being output. Probably none of these matters at this point. Just to point it out. Honza > > Jakub