> Hi,
>
> On Mon, Aug 19, 2013 at 04:01:16PM +0200, Jan Hubicka wrote:
>
> [...]
>
> >
> > * Makefile.in (ipa-devirt.o): Add dependency on diagnostic.h
> > * ipa-devirt.c: Include diganostic.h
> > (odr_type_d): Add types and types_set.
> > (hash_type_name): Work for types with vtables during LTO.
> > (odr_hasher::remove): Fix comment; destroy types_set.
> > (add_type_duplicate): New function,
> > (get_odr_type): Use it.
> > (dump_type_inheritance_graph): Dump type duplicates.
> > * ipa.c (symtab_remove_unreachable_nodes): Build type inheritance
> > graph.
> > * tree.c (types_same_for_odr): Give exact answers on types with
> > virtual tables.
>
> [...]
>
> > Index: ipa-devirt.c
> > ===================================================================
> > *** ipa-devirt.c (revision 201836)
> > --- ipa-devirt.c (working copy)
> > *************** static odr_hash_type odr_hash;
> > *** 222,227 ****
> > --- 251,382 ----
> > static GTY(()) vec <odr_type, va_gc> *odr_types_ptr;
> > #define odr_types (*odr_types_ptr)
> >
> > + /* TYPE is equivalent to VAL by ODR, but its tree representation differs
> > + from VAL->type. This may happen in LTO where tree merging did not
> > merge
> > + all variants of the same type. It may or may not mean the ODR
> > violation.
> > + Add it to the list of duplicates and warn on some violations. */
> > +
> > + void
> > + add_type_duplicate (odr_type val, tree type)
> > + {
>
> It seems the function can be made static. If not, it should probably
> have a name that would be less prone to clashes.
Yes, it can be static. It is anoying we no longer have those missing static
keyword warnings like before switch to c++. I updated my local tree.
Thanks,
Honza
>
> Thanks,
>
> Martin