Commit 6ac22177 by Luo Xiong Hu Committed by Xiong Hu Luo

ipa-inline: Adjust condition for caller_growth_limits

Inline should return failure either (newsize > param_large_function_insns)
OR (newsize > limit).  Sometimes newsize is larger than
param_large_function_insns, but smaller than limit, inline doesn't return
failure even if the new function is a large function.
Therefore, param_large_function_insns and param_large_function_growth should be
OR instead of AND, otherwise --param large-function-growth won't
work correctly with --param large-function-insns.

gcc/ChangeLog:

	2020-01-07  Luo Xiong Hu  <luoxhu@linux.ibm.com>

	* ipa-inline-analysis.c (estimate_growth): Fix typo.
	* ipa-inline.c (caller_growth_limits): Use OR instead of AND.

From-SVN: r279942
parent 1b02c8c3
2020-01-07 Luo Xiong Hu <luoxhu@linux.ibm.com>
* ipa-inline-analysis.c (estimate_growth): Fix typo.
* ipa-inline.c (caller_growth_limits): Use OR instead of AND.
2020-01-06 Michael Meissner <meissner@linux.ibm.com> 2020-01-06 Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New * config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New
......
...@@ -462,7 +462,7 @@ offline_size (struct cgraph_node *node, ipa_size_summary *info) ...@@ -462,7 +462,7 @@ offline_size (struct cgraph_node *node, ipa_size_summary *info)
return 0; return 0;
} }
/* Estimate the growth caused by inlining NODE into all callees. */ /* Estimate the growth caused by inlining NODE into all callers. */
int int
estimate_growth (struct cgraph_node *node) estimate_growth (struct cgraph_node *node)
......
...@@ -184,8 +184,8 @@ caller_growth_limits (struct cgraph_edge *e) ...@@ -184,8 +184,8 @@ caller_growth_limits (struct cgraph_edge *e)
the function to shrink if it went over the limits by forced inlining. */ the function to shrink if it went over the limits by forced inlining. */
newsize = estimate_size_after_inlining (to, e); newsize = estimate_size_after_inlining (to, e);
if (newsize >= ipa_size_summaries->get (what)->size if (newsize >= ipa_size_summaries->get (what)->size
&& newsize > opt_for_fn (to->decl, param_large_function_insns) && (newsize > opt_for_fn (to->decl, param_large_function_insns)
&& newsize > limit) || newsize > limit))
{ {
e->inline_failed = CIF_LARGE_FUNCTION_GROWTH_LIMIT; e->inline_failed = CIF_LARGE_FUNCTION_GROWTH_LIMIT;
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment