On Fri, Apr 29, 2011 at 2:18 PM, Jan Hubicka <hubi...@ucw.cz> wrote:
> Hi,
> this more or less complettes the infrastructure for predicates by adding
> logic propagating predicates across CFG.  I also added switch statement
> handling and __builtin_constant_p construct, so we "understand" functions
> using those as one in the new testcase.
>
> It also turned out that the predicate handling code should be more aggressive
> on simplification and canonicalization so the propagation converges quickly.
>
> Bootstrapped/regtested x86_64-linux, will commit it shortly.
>
> Honza
>
>        * gcc.dg/tree-ssa/inline-10.c: New testcase.
>        * gcc.dg/tree-ssa/inline-9.c: Disable partial inlining.
>        * ipa-inline.h (clause_t): Turn into unsigned int.
>        * ipa-inline-analysis.c (add_clause): Do more simplification.
>        (and_predicates): Shortcut more cases.
>        (predicates_equal_p): Move forward; check that clauses are properly
>        ordered.
>        (or_predicates): Shortcut more cases.
>        (edge_execution_predicate): Rewrite as...
>        (set_cond_stmt_execution_predicate): ... this function; handle
>        __builtin_constant_p.
>        (set_switch_stmt_execution_predicate): New .
>        (compute_bb_predicates): New.
>        (will_be_nonconstant_predicate): Update TODO.
>        (estimate_function_body_sizes): Use compute_bb_predicates
>        and free them later, always try to estimate if stmt is constant.
>        (estimate_time_after_inlining, estimate_size_after_inlining):
>        Gracefully handle optimized out edges.
>        (read_predicate): Fix off by one error.

This caused:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48929


-- 
H.J.

Reply via email to