This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Type inheritance graph analysis & speculative devirtualization, part 2/6 (type inheritance graph builder)
- From: Martin Jambor <mjambor at suse dot cz>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 24 Aug 2013 16:40:52 +0200
- Subject: Re: Type inheritance graph analysis & speculative devirtualization, part 2/6 (type inheritance graph builder)
- References: <20130818181957 dot GA12682 at kam dot mff dot cuni dot cz>
On Sun, Aug 18, 2013 at 08:19:57PM +0200, Jan Hubicka wrote:
> Hi,
> this patch implements the type inheritance graph builder. Once the graph is
> built it stays in memory and unchanged thorough the compilation (we do not
> expect to invent new virtual methods during the optimization)
> The graph is dumped into new IPA dump file "type-inheritance".
>
[...]
> * Makeifle-in (ipa-devirt.o): New.
> (GTFILES): Add ipa-utils.h and ipa-devirt.c
> * cgraphunit.c (decide_is_symbol_needed): Do not care about virtuals.
> (analyze_functions): Look into possible targets of polymorphic call.
> * dumpfile.c (dump_files): Add type-inheritance dump.
> * dumpfile.h (TDI_inheritance): New.
> * ipa-devirt.c: New file.
> * ipa-utils.h (odr_type_d): Forward declare.
> (odr_type): New type.
> (build_type_inheritance_graph): Declare.
> (possible_polymorphic_call_targets): Declare and introduce inline
> variant when only edge is pased.
> (dump_possible_polymorphic_call_targets): Likewise.
> * timevar.def (TV_IPA_INHERITANCE, TV_IPA_VIRTUAL_CALL): New.
> * tree.c (type_in_anonymous_namespace_p): Break out from ...
> (types_same_for_odr): ... here.
> * tree.h (type_in_anonymous_namespace_p): Declare.
>
> * g++.dg/ipa/type-inheritance-1.C: New testcase.
This was bit tough to review but I do not see any problems. Perhaps
we could get rid off the matched_vtables parameters but that is a very
minor thing.
Thanks,
Martin