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.