From 6957a6f6f90ef5be56e154ee7ce8656ec0248e6f Mon Sep 17 00:00:00 2001 From: Zhouyi Zhou Date: Wed, 10 Apr 2013 09:22:04 +0000 Subject: [PATCH] cif-code.def (OVERWRITABLE): Correct the comment for overwritable function. 2013-04-10 Zhouyi Zhou * cif-code.def (OVERWRITABLE): Correct the comment for overwritable function. * ipa-inline.c (can_inline_edge_p): Let dump mechanism report the inline fail caused by overwritable functions. * gcc.dg/tree-ssa/inline-11.c: New test From-SVN: r197667 --- gcc/ChangeLog | 7 +++++++ gcc/cif-code.def | 2 +- gcc/ipa-inline.c | 2 +- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/tree-ssa/inline-11.c | 14 ++++++++++++++ 5 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/inline-11.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3e3e3b7243f..b8a67893a0a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2013-04-10 Zhouyi Zhou + + * cif-code.def (OVERWRITABLE): Correct the comment for overwritable + function. + * ipa-inline.c (can_inline_edge_p): Let dump mechanism report the + inline fail caused by overwritable functions. + 2013-04-10 Chung-Ju Wu * combine.c (simplify_compare_const): Use GET_MODE_MASK to filter out diff --git a/gcc/cif-code.def b/gcc/cif-code.def index 55e0ef45b3b..d1c49417325 100644 --- a/gcc/cif-code.def +++ b/gcc/cif-code.def @@ -48,7 +48,7 @@ DEFCIFCODE(REDEFINED_EXTERN_INLINE, /* Function is not inlinable. */ DEFCIFCODE(FUNCTION_NOT_INLINABLE, N_("function not inlinable")) -/* Function is not overwritable. */ +/* Function is overwritable. */ DEFCIFCODE(OVERWRITABLE, N_("function body can be overwritten at link time")) /* Function is not an inlining candidate. */ diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 90b2a13fce9..171d6a2266c 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -266,7 +266,7 @@ can_inline_edge_p (struct cgraph_edge *e, bool report) else if (avail <= AVAIL_OVERWRITABLE) { e->inline_failed = CIF_OVERWRITABLE; - return false; + inlinable = false; } else if (e->call_stmt_cannot_inline_p) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6b44c64351e..13585fc0758 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2013-04-10 Zhouyi Zhou + + * gcc.dg/tree-ssa/inline-11.c: New test + 2013-04-10 Jakub Jelinek PR c++/56895 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/inline-11.c b/gcc/testsuite/gcc.dg/tree-ssa/inline-11.c new file mode 100644 index 00000000000..7d45ec135eb --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/inline-11.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-require-weak "" } */ +/* { dg-options "-O2 -fdump-tree-einline" } */ +int w; +int bar (void) __attribute__ ((weak)); +int bar (){ + w++; +} +void foo() +{ + bar(); +} +/* { dg-final { scan-tree-dump-times "function body can be overwritten at link time" 1 "einline" } } */ +/* { dg-final { cleanup-tree-dump "einline" } } */