aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Bruel <christian.bruel@st.com>2011-06-21 08:45:05 +0200
committerChristian Bruel <chrbr@gcc.gnu.org>2011-06-21 08:45:05 +0200
commit4b583c4361025855c6da28b5366f81b4220b873e (patch)
treec2d036e1ccc3b170f9b6eec46bd6c6b50193f110
parent3bb556ad608cac4876d7f233ebb2d13307d2e02c (diff)
downloadgcc-4b583c4361025855c6da28b5366f81b4220b873e.zip
gcc-4b583c4361025855c6da28b5366f81b4220b873e.tar.gz
gcc-4b583c4361025855c6da28b5366f81b4220b873e.tar.bz2
PR middle-end/49139 PR other/43564 make sure the inline function is inlined
From-SVN: r175241
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ipa-inline.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1c9dced..235d409 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2011-06-21 Christian Bruel <christian.bruel@st.com>
+ PR other/43564
+ * ipa-inline.c (can_inline_edge_p): Check !DECL_DISREGARD_INLINE_LIMITS.
+
+2011-06-21 Christian Bruel <christian.bruel@st.com>
+
PR middle-end/49139
* cgraphunit.c (process_function_and_variable_attributes): warn when
always_inline functions that are not inline.
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index ff1041b..90053e4 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -318,8 +318,10 @@ can_inline_edge_p (struct cgraph_edge *e, bool report)
? callee_tree
: optimization_default_node);
- if ((caller_opt->x_optimize > callee_opt->x_optimize)
- || (caller_opt->x_optimize_size != callee_opt->x_optimize_size))
+ if (((caller_opt->x_optimize > callee_opt->x_optimize)
+ || (caller_opt->x_optimize_size != callee_opt->x_optimize_size))
+ /* gcc.dg/pr43564.c. Look at forced inline even in -O0. */
+ && !DECL_DISREGARD_INLINE_LIMITS (e->callee->decl))
{
e->inline_failed = CIF_TARGET_OPTIMIZATION_MISMATCH;
inlinable = false;