From 993555181042e01fcdb573a44f4c787a3e50e25a Mon Sep 17 00:00:00 2001
From: Jan Hubicka <jh@suse.cz>
Date: Tue, 29 Jul 2008 12:49:30 +0200
Subject: [PATCH] optimize.c (maybe_clone_body): Remove DECL_INLINE.

 	* optimize.c (maybe_clone_body): Remove DECL_INLINE.
	* decl.c (duplicate_decls): Likewise.
	(grokfndecl): Likewise.
	(start_method): Likewise.
	* method.c (make_thunk, make_alias_for, implicitly_declare_fn):
	Likewise.
	* pt.c (register_specialization, regenerate_decl_from_template):
	Likewise.
	* decl2.c (grokfield): Likewise.

From-SVN: r138236
---
 gcc/cp/ChangeLog  | 12 ++++++++++++
 gcc/cp/decl.c     | 26 ++------------------------
 gcc/cp/decl2.c    |  2 --
 gcc/cp/method.c   |  3 ---
 gcc/cp/optimize.c |  1 -
 gcc/cp/pt.c       | 10 ++--------
 6 files changed, 16 insertions(+), 38 deletions(-)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b44108402d4e..6fe401a759bd 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,15 @@
+2008-07-29  Jan Hubicka  <jh@suse.cz>
+
+ 	* optimize.c (maybe_clone_body): Remove DECL_INLINE.
+	* decl.c (duplicate_decls): Likewise.
+	(grokfndecl): Likewise.
+	(start_method): Likewise.
+	* method.c (make_thunk, make_alias_for, implicitly_declare_fn):
+	Likewise.
+	* pt.c (register_specialization, regenerate_decl_from_template):
+	Likewise.
+	* decl2.c (grokfield): Likewise.
+
 2008-07-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
 
 	PR 34985
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 248b9b71a053..1ed98eee4ff9 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -1652,15 +1652,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
 	      && DECL_INITIAL (new_result))
 	    {
 	      if (DECL_INITIAL (old_result))
-		{
-		  DECL_INLINE (old_result) = 0;
-		  DECL_UNINLINABLE (old_result) = 1;
-		}
+		DECL_UNINLINABLE (old_result) = 1;
 	      else
-		{
-		  DECL_INLINE (old_result) = DECL_INLINE (new_result);
-		  DECL_UNINLINABLE (old_result) = DECL_UNINLINABLE (new_result);
-		}
+		DECL_UNINLINABLE (old_result) = DECL_UNINLINABLE (new_result);
 	      DECL_EXTERNAL (old_result) = DECL_EXTERNAL (new_result);
 	      DECL_NOT_REALLY_EXTERN (old_result)
 		= DECL_NOT_REALLY_EXTERN (new_result);
@@ -1674,8 +1668,6 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
 	    }
 	  else
 	    {
-	      DECL_INLINE (old_result)
-		|= DECL_INLINE (new_result);
 	      DECL_DECLARED_INLINE_P (old_result)
 		|= DECL_DECLARED_INLINE_P (new_result);
 	      DECL_DISREGARD_INLINE_LIMITS (old_result)
@@ -1949,7 +1941,6 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
 	  /* Never inline re-defined extern inline functions.
 	     FIXME: this could be better handled by keeping both
 	     function as separate declarations.  */
-	  DECL_INLINE (newdecl) = 0;
 	  DECL_UNINLINABLE (newdecl) = 1;
 	}
       else
@@ -1959,12 +1950,6 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
 
 	  DECL_DECLARED_INLINE_P (newdecl) |= DECL_DECLARED_INLINE_P (olddecl);
 
-	  /* If either decl says `inline', this fn is inline, unless
-	     its definition was passed already.  */
-	  if (DECL_INLINE (newdecl) && DECL_INITIAL (olddecl) == NULL_TREE)
-	    DECL_INLINE (olddecl) = 1;
-	  DECL_INLINE (newdecl) = DECL_INLINE (olddecl);
-
 	  DECL_UNINLINABLE (newdecl) = DECL_UNINLINABLE (olddecl)
 	    = (DECL_UNINLINABLE (newdecl) || DECL_UNINLINABLE (olddecl));
 
@@ -6649,11 +6634,6 @@ grokfndecl (tree ctype,
   /* If the declaration was declared inline, mark it as such.  */
   if (inlinep)
     DECL_DECLARED_INLINE_P (decl) = 1;
-  /* We inline functions that are explicitly declared inline, or, when
-     the user explicitly asks us to, all functions.  */
-  if (DECL_DECLARED_INLINE_P (decl)
-      || (!DECL_INLINE (decl) && funcdef_flag))
-    DECL_INLINE (decl) = 1;
 
   DECL_EXTERNAL (decl) = 1;
   if (quals && TREE_CODE (type) == FUNCTION_TYPE)
@@ -12138,8 +12118,6 @@ start_method (cp_decl_specifier_seq *declspecs,
   check_template_shadow (fndecl);
 
   DECL_DECLARED_INLINE_P (fndecl) = 1;
-  if (flag_default_inline)
-    DECL_INLINE (fndecl) = 1;
 
   /* We process method specializations in finish_struct_1.  */
   if (processing_template_decl && !DECL_TEMPLATE_SPECIALIZATION (fndecl))
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 20b0826faf26..05f75f7de841 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -837,7 +837,6 @@ grokfield (const cp_declarator *declarator,
 		  DECL_DEFAULTED_FN (value) = 1;
 		  DECL_INITIALIZED_IN_CLASS_P (value) = 1;
 		  DECL_DECLARED_INLINE_P (value) = 1;
-		  DECL_INLINE (value) = 1;
 		}
 	    }
 	  else if (TREE_CODE (TREE_TYPE (value)) == METHOD_TYPE)
@@ -2702,7 +2701,6 @@ start_static_storage_duration_function (unsigned count)
 			       type);
   TREE_PUBLIC (ssdf_decl) = 0;
   DECL_ARTIFICIAL (ssdf_decl) = 1;
-  DECL_INLINE (ssdf_decl) = 1;
 
   /* Put this function in the list of functions to be called from the
      static constructors and destructors.  */
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index f3d23eba23dc..b215d2a3936a 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -155,7 +155,6 @@ make_thunk (tree function, bool this_adjusting,
   DECL_NO_STATIC_CHAIN (thunk) = 1;
   /* The THUNK is not a pending inline, even if the FUNCTION is.  */
   DECL_PENDING_INLINE_P (thunk) = 0;
-  DECL_INLINE (thunk) = 0;
   DECL_DECLARED_INLINE_P (thunk) = 0;
   /* Nor has it been deferred.  */
   DECL_DEFERRED_FN (thunk) = 0;
@@ -281,7 +280,6 @@ make_alias_for (tree function, tree newid)
   DECL_ARTIFICIAL (alias) = 1;
   DECL_NO_STATIC_CHAIN (alias) = 1;
   DECL_PENDING_INLINE_P (alias) = 0;
-  DECL_INLINE (alias) = 0;
   DECL_DECLARED_INLINE_P (alias) = 0;
   DECL_DEFERRED_FN (alias) = 0;
   DECL_USE_TEMPLATE (alias) = 0;
@@ -1111,7 +1109,6 @@ implicitly_declare_fn (special_function_kind kind, tree type, bool const_p)
   DECL_DEFAULTED_FN (fn) = 1;
   DECL_NOT_REALLY_EXTERN (fn) = 1;
   DECL_DECLARED_INLINE_P (fn) = 1;
-  DECL_INLINE (fn) = 1;
   gcc_assert (!TREE_USED (fn));
 
   /* Restore PROCESSING_TEMPLATE_DECL.  */
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index ed43b435831b..8c7b9e82ccb5 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -138,7 +138,6 @@ maybe_clone_body (tree fn)
 
       /* Update CLONE's source position information to match FN's.  */
       DECL_SOURCE_LOCATION (clone) = DECL_SOURCE_LOCATION (fn);
-      DECL_INLINE (clone) = DECL_INLINE (fn);
       DECL_DECLARED_INLINE_P (clone) = DECL_DECLARED_INLINE_P (fn);
       DECL_COMDAT (clone) = DECL_COMDAT (fn);
       DECL_WEAK (clone) = DECL_WEAK (fn);
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index b47ee5e6b3f8..04fd29bb0092 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -1289,12 +1289,8 @@ register_specialization (tree spec, tree tmpl, tree args, bool is_friend)
 		to the primary function; now copy the inline bits to
 		the various clones.  */
 	      FOR_EACH_CLONE (clone, fn)
-		{
-		  DECL_DECLARED_INLINE_P (clone)
-		    = DECL_DECLARED_INLINE_P (fn);
-		  DECL_INLINE (clone)
-		    = DECL_INLINE (fn);
-		}
+		DECL_DECLARED_INLINE_P (clone)
+		  = DECL_DECLARED_INLINE_P (fn);
 	      check_specialization_namespace (fn);
 
 	      return fn;
@@ -14921,8 +14917,6 @@ regenerate_decl_from_template (tree decl, tree tmpl)
       if (DECL_DECLARED_INLINE_P (code_pattern)
 	  && !DECL_DECLARED_INLINE_P (decl))
 	DECL_DECLARED_INLINE_P (decl) = 1;
-      if (DECL_INLINE (code_pattern) && !DECL_INLINE (decl))
-	DECL_INLINE (decl) = 1;
     }
   else if (TREE_CODE (decl) == VAR_DECL)
     DECL_INITIAL (decl) =
-- 
GitLab