cp-tree.h (flag_inline_trees): Update documentation.
authorMark Mitchell <mark@codesourcery.com>
Fri, 4 May 2001 03:03:39 +0000 (03:03 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Fri, 4 May 2001 03:03:39 +0000 (03:03 +0000)
* cp-tree.h (flag_inline_trees): Update documentation.
* decl.c (init_decl_processing): Adjust handling of
flag_inline_functions and flag_inline_trees to support -O3.
(grokfndecl): Set DECL_INLINE on all functions if that's what
the user requested.
(save_function_data): Clear DECL_INLINE in
current_function_cannot_inline is non-NULL.
* decl2.c (flag_inline_trees): Update documentation.

From-SVN: r41822

gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/decl2.c

index e98d1abc98e9efadcdacf61643ad6f2efe111c5c..0acfdb9b0416a6eb7901984bb5271d5330f3896f 100644 (file)
@@ -1,3 +1,14 @@
+2001-05-03  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (flag_inline_trees): Update documentation.
+       * decl.c (init_decl_processing): Adjust handling of
+       flag_inline_functions and flag_inline_trees to support -O3.
+       (grokfndecl): Set DECL_INLINE on all functions if that's what
+       the user requested.
+       (save_function_data): Clear DECL_INLINE in
+       current_function_cannot_inline is non-NULL.
+       * decl2.c (flag_inline_trees): Update documentation.
+
 2001-05-03  Nathan Sidwell  <nathan@codesourcery.com>
 
        * dump.c (cp_dump_tree, USING_STMT case): New case.
index 69623fbc335ae0b6997ab4c0dcd0443856db7465..05a0d0f45ac5b73e617675b666b6bc2dbe462c3b 100644 (file)
@@ -3445,8 +3445,10 @@ extern int flag_implicit_templates;
 
 extern int flag_weak;
 
-/* Nonzero if we should expand functions calls inline at the tree
-   level, rather than at the RTL level.  */
+/* 0 if we should not perform inlining.
+   1 if we should expand functions calls inline at the tree level.  
+   2 if we should consider *all* functions to be inline 
+   candidates.  */
 
 extern int flag_inline_trees;
 
index 0e8a44bc70c1550cd366d337f1fb704adf305dde..54d84f47ddda508fb29d81914cf46df7f0f9cc6c 100644 (file)
@@ -6365,6 +6365,11 @@ init_decl_processing ()
       flag_inline_trees = 1;
       flag_no_inline = 1;
     }
+  if (flag_inline_functions)
+    {
+      flag_inline_trees = 2;
+      flag_inline_functions = 0;
+    }
 
   /* Initially, C.  */
   current_lang_name = lang_name_c;
@@ -6547,10 +6552,6 @@ init_decl_processing ()
 
   if (flag_exceptions)
     init_exception_processing ();
-  if (flag_no_inline)
-    {
-      flag_inline_functions = 0;
-    }
 
   if (! supports_one_only ())
     flag_weak = 0;
@@ -8838,8 +8839,13 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals,
       DECL_NOT_REALLY_EXTERN (decl) = 1;
     }
 
+  /* If the declaration was declared inline, mark it as such.  */
   if (inlinep)
-    DECL_DECLARED_INLINE_P (decl) = DECL_INLINE (decl) = 1;
+    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) || flag_inline_trees == 2)
+    DECL_INLINE (decl) = 1;
 
   DECL_EXTERNAL (decl) = 1;
   if (quals != NULL_TREE && TREE_CODE (type) == FUNCTION_TYPE)
@@ -13771,7 +13777,11 @@ save_function_data (decl)
   /* If we've already decided that we cannot inline this function, we
      must remember that fact when we actually go to expand the
      function.  */
-  f->cannot_inline = current_function_cannot_inline;
+  if (current_function_cannot_inline)
+    {
+      f->cannot_inline = current_function_cannot_inline;
+      DECL_INLINE (decl) = 0;
+    }
 }
 
 /* At the end of every constructor we generate to code to return
index 768fd5ffd8faba18c6de460b8b970151e27a7a63..73b9afdc6129dc044a94a13ba5df356a0b6785fc 100644 (file)
@@ -396,8 +396,10 @@ int flag_use_cxa_atexit;
 
 int flag_honor_std = 1;
 
-/* Nonzero if we should expand functions calls inline at the tree
-   level, rather than at the RTL level.  */
+/* 0 if we should not perform inlining.
+   1 if we should expand functions calls inline at the tree level.  
+   2 if we should consider *all* functions to be inline 
+   candidates.  */
 
 int flag_inline_trees = 0;