OSDN Git Service

(output_inline_function): Turn on flag_no_inline to avoid function
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Oct 1995 22:48:39 +0000 (22:48 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Oct 1995 22:48:39 +0000 (22:48 +0000)
integration once we begin writing deferred output functions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10488 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/integrate.c

index f04f8b4..fcd242c 100644 (file)
@@ -707,10 +707,10 @@ copy_decl_rtls (block)
    modified.  In the second case, FNDECL is used for the last time,
    so modifying the rtl is not a problem.
 
-   ??? Actually, we do not verify that FNDECL is not inline expanded
-   by other functions which must also be written down at the end
-   of compilation.  We could set flag_no_inline to nonzero when
-   the time comes to write down such functions.  */
+   We don't have to worry about FNDECL being inline expanded by
+   other functions which are written at the end of compilation
+   because flag_no_inline is turned on when we begin writing
+   functions at the end of compilation.  */
 
 void
 save_for_inline_nocopy (fndecl)
@@ -3003,6 +3003,7 @@ output_inline_function (fndecl)
 {
   rtx head;
   rtx last;
+  int save_flag_no_inline = flag_no_inline;
 
   if (output_bytecode)
     {
@@ -3097,8 +3098,15 @@ output_inline_function (fndecl)
   /* We're not deferring this any longer.  */
   DECL_DEFER_OUTPUT (fndecl) = 0;
 
+  /* Integrating function calls isn't safe anymore, so turn on
+     flag_no_inline.  */
+  flag_no_inline = 1;
+
   /* Compile this function all the way down to assembly code.  */
   rest_of_compilation (fndecl);
 
+  /* Reset flag_no_inline to its original value.  */
+  flag_no_inline = save_flag_no_inline;
+
   current_function_decl = 0;
 }