ipa-inline: Adjust condition for caller_growth_limits
authorLuo Xiong Hu <luoxhu@linux.ibm.com>
Tue, 7 Jan 2020 02:38:16 +0000 (02:38 +0000)
committerXiong Hu Luo <luoxhu@gcc.gnu.org>
Tue, 7 Jan 2020 02:38:16 +0000 (02:38 +0000)
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

gcc/ChangeLog
gcc/ipa-inline-analysis.c
gcc/ipa-inline.c

index 513e14acaabc61f3a23cbc3683377a088210be2e..c7d25300934c20bff0e0fb318281588d6f27e251 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
        * config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New
index eb42caeb7aeb3f26cc250efc215df5629c966a45..8b400fff65aedbe1dcc1396223086944c6e0972a 100644 (file)
@@ -462,7 +462,7 @@ offline_size (struct cgraph_node *node, ipa_size_summary *info)
   return 0;
 }
 
-/* Estimate the growth caused by inlining NODE into all callees.  */
+/* Estimate the growth caused by inlining NODE into all callers.  */
 
 int
 estimate_growth (struct cgraph_node *node)
index 3b68fc47d013d73a9ab1127bbb8b724813bfac42..302badf1fcae6437fee3e168fd39aebb267f7e8c 100644 (file)
@@ -184,8 +184,8 @@ caller_growth_limits (struct cgraph_edge *e)
      the function to shrink if it went over the limits by forced inlining.  */
   newsize = estimate_size_after_inlining (to, e);
   if (newsize >= ipa_size_summaries->get (what)->size
-      && newsize > opt_for_fn (to->decl, param_large_function_insns)
-      && newsize > limit)
+      && (newsize > opt_for_fn (to->decl, param_large_function_insns)
+         || newsize > limit))
     {
       e->inline_failed = CIF_LARGE_FUNCTION_GROWTH_LIMIT;
       return false;