diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2019-07-25 16:07:29 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2019-07-25 16:07:29 +0000 |
commit | 5ab2422adf894bdf84deed8c7c0557c16d6dca2b (patch) | |
tree | 0b3f29e17af61b133ca4870bda6e49e4fd6a75dc | |
parent | 75088696935c7e179699cb448e0a2cee74c8494f (diff) | |
download | gcc-5ab2422adf894bdf84deed8c7c0557c16d6dca2b.zip gcc-5ab2422adf894bdf84deed8c7c0557c16d6dca2b.tar.gz gcc-5ab2422adf894bdf84deed8c7c0557c16d6dca2b.tar.bz2 |
cif-code.def (NEVER_CALL): New code.
* cif-code.def (NEVER_CALL): New code.
* ipa-inline.c (want_inline_small_function_p): Fix formatting issues.
Set the failure to CIF_NEVER_CALL if the IPA count is zero.
From-SVN: r273804
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cif-code.def | 4 | ||||
-rw-r--r-- | gcc/ipa-inline.c | 17 |
3 files changed, 20 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1155e4e..4196db2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-07-25 Eric Botcazou <ebotcazou@adacore.com> + + * cif-code.def (NEVER_CALL): New code. + * ipa-inline.c (want_inline_small_function_p): Fix formatting issues. + Set the failure to CIF_NEVER_CALL if the IPA count is zero. + 2019-07-25 Wilco Dijkstra <wdijkstr@arm.com> * config/arm/thumb2.md (thumb2_movsi_insn): Fix load/store low reg. diff --git a/gcc/cif-code.def b/gcc/cif-code.def index cee16cf..ccd08e2 100644 --- a/gcc/cif-code.def +++ b/gcc/cif-code.def @@ -83,6 +83,10 @@ DEFCIFCODE(RECURSIVE_INLINING, CIF_FINAL_NORMAL, DEFCIFCODE(UNLIKELY_CALL, CIF_FINAL_NORMAL, N_("call is unlikely and code size would grow")) +/* Call is considered never executed. */ +DEFCIFCODE(NEVER_CALL, CIF_FINAL_NORMAL, + N_("call is considered never executed and code size would grow")) + /* Function is not declared as inline. */ DEFCIFCODE(NOT_DECLARED_INLINED, CIF_FINAL_NORMAL, N_("function not declared inline and code size would grow")) diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 5862d00..0ed965a 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -810,7 +810,7 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report) | INLINE_HINT_loop_stride)) && !(big_speedup = big_speedup_p (e))))) { - e->inline_failed = CIF_MAX_INLINE_INSNS_SINGLE_LIMIT; + e->inline_failed = CIF_MAX_INLINE_INSNS_SINGLE_LIMIT; want_inline = false; } else if (!DECL_DECLARED_INLINE_P (callee->decl) @@ -818,12 +818,12 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report) && growth >= PARAM_VALUE (PARAM_MAX_INLINE_INSNS_SMALL)) { /* growth_likely_positive is expensive, always test it last. */ - if (growth >= MAX_INLINE_INSNS_SINGLE + if (growth >= MAX_INLINE_INSNS_SINGLE || growth_likely_positive (callee, growth)) { - e->inline_failed = CIF_NOT_DECLARED_INLINED; + e->inline_failed = CIF_NOT_DECLARED_INLINED; want_inline = false; - } + } } /* Apply MAX_INLINE_INSNS_AUTO limit for functions not declared inline Upgrade it to MAX_INLINE_INSNS_SINGLE when hints suggests that @@ -839,19 +839,22 @@ want_inline_small_function_p (struct cgraph_edge *e, bool report) && !(big_speedup == -1 ? big_speedup_p (e) : big_speedup)) { /* growth_likely_positive is expensive, always test it last. */ - if (growth >= MAX_INLINE_INSNS_SINGLE + if (growth >= MAX_INLINE_INSNS_SINGLE || growth_likely_positive (callee, growth)) { e->inline_failed = CIF_MAX_INLINE_INSNS_AUTO_LIMIT; want_inline = false; - } + } } /* If call is cold, do not inline when function body would grow. */ else if (!e->maybe_hot_p () && (growth >= MAX_INLINE_INSNS_SINGLE || growth_likely_positive (callee, growth))) { - e->inline_failed = CIF_UNLIKELY_CALL; + if (e->count.ipa () == profile_count::zero ()) + e->inline_failed = CIF_NEVER_CALL; + else + e->inline_failed = CIF_UNLIKELY_CALL; want_inline = false; } } |