From a5512a2fe24bd5e4d3ce499a4c6deca0a94042e3 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 11 Jun 2003 17:02:13 +0000 Subject: [PATCH] re PR c++/11131 (Unrelated declaration removes inline flag from function) PR c++/11131 * tree.c (cp_cannot_inline_fn): Check for "inline" before instantiation. From-SVN: r67783 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/tree.c | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a6e4e034869..0f79c7cc41f 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-06-11 Mark Mitchell + + PR c++/11131 + * tree.c (cp_cannot_inline_fn): Check for "inline" before + instantiation. + 2003-06-10 Jason Merrill PR c++/10968 diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index b696c3bd655..2e907c0b837 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -2209,14 +2209,16 @@ cp_cannot_inline_tree_fn (fnp) if (DECL_TEMPLATE_INFO (fn) && TI_PENDING_TEMPLATE_FLAG (DECL_TEMPLATE_INFO (fn))) { + /* Don't instantiate functions that are not going to be + inlined. */ + if (!DECL_INLINE (DECL_TEMPLATE_RESULT + (template_for_substitution (fn)))) + return 1; fn = *fnp = instantiate_decl (fn, /*defer_ok=*/0); if (TI_PENDING_TEMPLATE_FLAG (DECL_TEMPLATE_INFO (fn))) return 1; } - if (!DECL_INLINE (fn)) - return 1; - if (flag_really_no_inline && lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn)) == NULL) return 1;