On Mon, 27 Jun 2011, Jan Hubicka wrote: > Hi, > this patch fixes thinko in cgraph_address_taken_from_non_vtable_p that valks > references in NODE instead of references of NODE. > It fixes the testcase in http://sourceware.org/bugzilla/show_bug.cgi?id=12942 > in non-plugin LTO and Gold, but not with GNU LD that presently handle > resolution > info incorrectly for comdats. > > Dave, do you think you could fix the GNU LD issue? > > Once fixed, I wonder if I should not add the testcase as > lto/broken_comdat_in_gnu_ld.c or something similar like we have testcases for > glibc/mpfr bugs?
I think you should add that now (given you have it). Richard. > Bootstrapped/regtested x86_64-linux, comitted. > > Index: ChangeLog > =================================================================== > --- ChangeLog (revision 175554) > +++ ChangeLog (working copy) > @@ -1,3 +1,8 @@ > +2011-06-27 Jan Hubicka <j...@suse.cz> > + > + * ipa.c (cgraph_address_taken_from_non_vtable_p): Walk references of > node > + instead of references in node. > + > 2011-06-27 Richard Henderson <r...@redhat.com> > > * config/alpha/alpha.c (vms_patch_builtins): Provide dummy definition. > Index: ipa.c > =================================================================== > --- ipa.c (revision 175554) > +++ ipa.c (working copy) > @@ -542,13 +542,13 @@ cgraph_address_taken_from_non_vtable_p ( > { > int i; > struct ipa_ref *ref; > - for (i = 0; ipa_ref_list_reference_iterate (&node->ref_list, i, ref); i++) > + for (i = 0; ipa_ref_list_refering_iterate (&node->ref_list, i, ref); i++) > if (ref->use == IPA_REF_ADDR) > { > struct varpool_node *node; > - if (ref->refered_type == IPA_REF_CGRAPH) > + if (ref->refering_type == IPA_REF_CGRAPH) > return true; > - node = ipa_ref_varpool_node (ref); > + node = ipa_ref_refering_varpool_node (ref); > if (!DECL_VIRTUAL_P (node->decl)) > return true; > } > > -- Richard Guenther <rguent...@suse.de> Novell / SUSE Labs SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer