From 15273bcd399fabc5409c2028f5fd4edef8d5955d Mon Sep 17 00:00:00 2001
From: mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed, 11 Jun 2003 17:02:13 +0000
Subject: [PATCH] 	PR c++/11131 	* tree.c (cp_cannot_inline_fn): Check
 for "inline" before 	instantiation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67783 138bc75d-0d04-0410-961f-82ee72b054a4
---
 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 a6e4e0348699..0f79c7cc41f3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2003-06-11  Mark Mitchell  <mark@codesourcery.com>
+
+	PR c++/11131
+	* tree.c (cp_cannot_inline_fn): Check for "inline" before
+	instantiation.
+
 2003-06-10  Jason Merrill  <jason@redhat.com>
 
 	PR c++/10968
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index b696c3bd655c..2e907c0b837f 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;
-- 
GitLab