diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-inline.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr48063.c | 19 |
4 files changed, 32 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 498e45c4..9630d36 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-03-11 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/48063 + * ipa-inline.c (cgraph_decide_inlining): Don't try to + inline functions called once if !tree_can_inline_p (node->callers). + 2011-03-11 Chen Liqin <liqin.gcc@gmail.com> * config.gcc (score-*-elf): Add extra_parts .., update tmake_file and diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index e8676c8..7ae5f96 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -1,5 +1,5 @@ /* Inlining decision heuristics. - Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010 + Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Contributed by Jan Hubicka @@ -1498,6 +1498,7 @@ cgraph_decide_inlining (void) && node->callers->caller != node && node->callers->caller->global.inlined_to != node && !node->callers->call_stmt_cannot_inline_p + && tree_can_inline_p (node->callers) && !DECL_EXTERNAL (node->decl)) { cgraph_inline_failed_t reason; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c3dec73..23c94ce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-03-11 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/48063 + * gcc.dg/torture/pr48063.c: New test. + 2011-03-10 Jason Merrill <jason@redhat.com> * g++.dg/template/array22.C: New. diff --git a/gcc/testsuite/gcc.dg/torture/pr48063.c b/gcc/testsuite/gcc.dg/torture/pr48063.c new file mode 100644 index 0000000..d861bf0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr48063.c @@ -0,0 +1,19 @@ +/* PR tree-optimization/48063 */ +/* { dg-do compile } */ +/* { dg-options "-fno-early-inlining" } */ + +extern void abort (void); +static void bar (); + +void +foo () +{ + bar (1); +} + +static void +bar (double i) +{ + if (i) + abort (); +} |