From: Jan Hubicka Date: Tue, 16 Dec 2014 22:16:17 +0000 (+0100) Subject: ipa-inline-analysis.c (will_be_nonconstant_predicate): Consider return values of... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=061ddf67f7bb299e3eff9ea5cc96d12668ea8f56;p=gcc.git ipa-inline-analysis.c (will_be_nonconstant_predicate): Consider return values of const calls as constants. * ipa-inline-analysis.c (will_be_nonconstant_predicate): Consider return values of const calls as constants. (estimate_function_body_sizes): Expect calls to have false predicates. From-SVN: r218796 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b8009b18190..da100964804 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-12-16 Jan Hubicka + + * ipa-inline-analysis.c (will_be_nonconstant_predicate): Consider + return values of const calls as constants. + (estimate_function_body_sizes): Expect calls to have false predicates. + 2014-12-16 Jan Hubicka * hwint.c (abs_hwi, absu_hwi): Move to ... diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c index fb4e81ebba4..3b622f2f0e4 100644 --- a/gcc/ipa-inline-analysis.c +++ b/gcc/ipa-inline-analysis.c @@ -2036,12 +2036,12 @@ will_be_nonconstant_predicate (struct ipa_node_params *info, struct agg_position_info aggpos; /* What statments might be optimized away - when their arguments are constant - TODO: also trivial builtins. - builtin_constant_p is already handled later. */ + when their arguments are constant. */ if (gimple_code (stmt) != GIMPLE_ASSIGN && gimple_code (stmt) != GIMPLE_COND - && gimple_code (stmt) != GIMPLE_SWITCH) + && gimple_code (stmt) != GIMPLE_SWITCH + && (gimple_code (stmt) != GIMPLE_CALL + || !(gimple_call_flags (stmt) & ECF_CONST))) return p; /* Stores will stay anyway. */ @@ -2101,9 +2101,10 @@ will_be_nonconstant_predicate (struct ipa_node_params *info, p = nonconstant_names[SSA_NAME_VERSION (use)]; op_non_const = or_predicates (summary->conds, &p, &op_non_const); } - if (gimple_code (stmt) == GIMPLE_ASSIGN - && TREE_CODE (gimple_assign_lhs (stmt)) == SSA_NAME) - nonconstant_names[SSA_NAME_VERSION (gimple_assign_lhs (stmt))] + if ((gimple_code (stmt) == GIMPLE_ASSIGN || gimple_code (stmt) == GIMPLE_CALL) + && gimple_op (stmt, 0) + && TREE_CODE (gimple_op (stmt, 0)) == SSA_NAME) + nonconstant_names[SSA_NAME_VERSION (gimple_op (stmt, 0))] = op_non_const; return op_non_const; } @@ -2683,7 +2684,9 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early) else p = true_predicate (); - if (!false_predicate_p (&p)) + if (!false_predicate_p (&p) + || (is_gimple_call (stmt) + && !false_predicate_p (&bb_predicate))) { time += this_time; size += this_size;