aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-01-13 02:35:27 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2004-01-13 01:35:27 +0000
commit2d3270129fac84d3d3420a1da10330404ccadc2a (patch)
tree45863b0867b1a5dca9004db917fa2c41f48f77a5 /gcc/tree-inline.c
parent04cc79bb8928ff2c97bef9df08dc252eecdc9845 (diff)
downloadgcc-2d3270129fac84d3d3420a1da10330404ccadc2a.zip
gcc-2d3270129fac84d3d3420a1da10330404ccadc2a.tar.gz
gcc-2d3270129fac84d3d3420a1da10330404ccadc2a.tar.bz2
cgraphunit.c (cgraph_optimize_function): Always do optimize_inline_calls when there is always_inline callee.
* cgraphunit.c (cgraph_optimize_function): Always do optimize_inline_calls when there is always_inline callee. (cgraph_decide_inlining): Fix formating. * tree-inline.c (inlinable_function_p): Do sorry for alwaysinline functions. (expand_call_inline): Likewise. * toplev.h (sorry): Fix prototype. * gcc.dg/always_inline.c: New test. * gcc.dg/debug/20031231-1.c: Fix. From-SVN: r75781
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 9d73be2..ea8edcf 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1213,7 +1213,10 @@ inlinable_function_p (tree fn)
&& DECL_DECLARED_INLINE_P (fn)
&& !DECL_IN_SYSTEM_HEADER (fn));
- if (do_warning)
+ if (lookup_attribute ("always_inline",
+ DECL_ATTRIBUTES (fn)))
+ sorry (inline_forbidden_reason, fn, fn);
+ else if (do_warning)
warning (inline_forbidden_reason, fn, fn);
inlinable = false;
@@ -1330,9 +1333,14 @@ expand_call_inline (tree *tp, int *walk_subtrees, void *data)
inlining. */
if (!cgraph_inline_p (id->current_decl, fn, &reason))
{
- if (warn_inline && DECL_DECLARED_INLINE_P (fn)
- && !DECL_IN_SYSTEM_HEADER (fn)
- && strlen (reason))
+ if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)))
+ {
+ sorry ("%Jinlining failed in call to '%F': %s", fn, fn, reason);
+ sorry ("called from here");
+ }
+ else if (warn_inline && DECL_DECLARED_INLINE_P (fn)
+ && !DECL_IN_SYSTEM_HEADER (fn)
+ && strlen (reason))
{
warning ("%Jinlining failed in call to '%F': %s", fn, fn, reason);
warning ("called from here");