> 
> The reason why ipa_get_indirect_edge_target is split into two is that
> unlike in the inlining case, this one has to understand the
> description of known aggregate values in clones which are different
> from aggregate jump functions (they are quite simpler).  Otherwise the
> patch is hopefully quite straightforward.

Hmm, perhaps we can commonize it a bit more?
> 
> Bootstrapped and tested on x86_64-linux, OK for trunk?

I would also suggest adding code translating calls to known constant (NULL or 
integer_cst) into
__builtin_trap / __bulitin_unreachable (based on Richi's preferences).  It 
should help code quality
(since relatively few calls are like that on Mozilla) and also it will make us 
to notice where
we propagate complette garbage - I still do not know of those obviously bogus 
calls come from
impossible type conversions (so we read past vtable) or because of some bug.
> 
> 2013-03-19  Martin Jambor  <mjam...@suse.cz>
> 
>       * ipa-cp.c (ipa_get_indirect_edge_target): Renamed to
>       ipa_get_indirect_edge_target_1, added parameter agg_reps and ability to
>       process it.
>       (ipa_get_indirect_edge_target): New function.
>       (devirtualization_time_bonus): New parameter known_aggs, pass it to
>       ipa_get_indirect_edge_target.  Update all callers.
>       (ipcp_discover_new_direct_edges): New parameter aggvals.  Pass it to
>       ipa_get_indirect_edge_target_1 instead of calling
>       ipa_get_indirect_edge_target.
>       (create_specialized_node): Pass aggvlas to
>       ipcp_discover_new_direct_edges.
> 
> testsuite/
>       * gcc.dg/ipa/ipcp-agg-9.c: New test.
> 
OK,
thanks

Honza

Reply via email to