From db86e6d4f02e89801bd7eb8d807e99cdaefc2a12 Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 7 Dec 2011 11:55:16 +0000 Subject: [PATCH] 2011-12-07 Richard Guenther PR tree-optimization/50823 * ipa-inline.c (edge_badness): Do not account for the number of remaining calls. * gcc.dg/torture/pr50823.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182077 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 +++++ gcc/ipa-inline.c | 7 ++---- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gcc.dg/torture/pr50823.c | 43 ++++++++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/torture/pr50823.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5028c5fbbdc..486aa0f141d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-12-07 Richard Guenther + + PR tree-optimization/50823 + * ipa-inline.c (edge_badness): Do not account for the number of + remaining calls. + 2011-12-07 Martin Jambor PR tree-optimization/50744 diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 59852b5d26b..3cb35e924c1 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -808,7 +808,6 @@ edge_badness (struct cgraph_edge *edge, bool dump) else if (flag_guess_branch_prob) { int div = edge->frequency * (1<<10) / CGRAPH_FREQ_MAX; - int growth_for_all; div = MAX (div, 1); gcc_checking_assert (edge->frequency <= CGRAPH_FREQ_MAX); @@ -846,14 +845,12 @@ edge_badness (struct cgraph_edge *edge, bool dump) if (dump) fprintf (dump_file, "Badness overflow\n"); } - growth_for_all = estimate_growth (callee); - badness += growth_for_all; if (dump) { fprintf (dump_file, - " %i: guessed profile. frequency %f, overall growth %i," + " %i: guessed profile. frequency %f," " benefit %f%%, divisor %i\n", - (int) badness, (double)edge->frequency / CGRAPH_FREQ_BASE, growth_for_all, + (int) badness, (double)edge->frequency / CGRAPH_FREQ_BASE, relative_time_benefit (callee_info, edge, time_growth) * 100 / 256.0, div); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e87e85f7433..1763ada432c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-12-07 Richard Guenther + + PR tree-optimization/50823 + * gcc.dg/torture/pr50823.c: New testcase. + 2011-12-07 Martin Jambor PR tree-optimization/50744 diff --git a/gcc/testsuite/gcc.dg/torture/pr50823.c b/gcc/testsuite/gcc.dg/torture/pr50823.c new file mode 100644 index 00000000000..9ac69117218 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr50823.c @@ -0,0 +1,43 @@ +/* { dg-do compile } */ +/* { dg-options "-finline-functions" } */ + +int k1, k2, k3, k4, k5, k6, k7, k8; + +void set_first_insn (int); +void set_last_insn (void); + +static int make_insn_raw (void) +{ + set_first_insn (0); + set_last_insn (); + return k1; +} + +static void add_insn_after (void) +{ + if (k2) + k3 = k4; + + if (k5) + k6 = k7; +} + +void emit_pattern_after_noloc (int (make_raw) (void)) +{ + if (k8) + { + make_raw (); + add_insn_after (); + } +} + +void emit_insn_after_noloc (void) +{ + emit_pattern_after_noloc (make_insn_raw); +} + +void emit_debug_insn_before_setloc (int k9) +{ + if (k9) + make_insn_raw (); +} -- 2.11.0