From b3f7c02fd975d38fe3a687cda9881c91f5fa95b0 Mon Sep 17 00:00:00 2001
From: rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu, 28 Mar 2002 18:51:49 +0000
Subject: [PATCH]         * c-decl.c (finish_function): New arg can_defer_p. 
 Pass it         on to c_expand_body.         * c-tree.h (finish_function):
 Update decl.         * c-objc-common.c, c-parse.in, objc/objc-act.c: Update
 calls.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51518 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog       |  7 +++++++
 gcc/c-decl.c        |  8 +++++---
 gcc/c-objc-common.c |  2 +-
 gcc/c-parse.in      | 10 +++++-----
 gcc/c-tree.h        |  2 +-
 gcc/objc/objc-act.c |  4 ++--
 6 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b07a41b7ba00..288f5107940c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2002-03-28  Richard Henderson  <rth@redhat.com>
+
+	* c-decl.c (finish_function): New arg can_defer_p.  Pass it
+	on to c_expand_body.
+	* c-tree.h (finish_function): Update decl.
+	* c-objc-common.c, c-parse.in, objc/objc-act.c: Update calls.
+
 Thu Mar 28 19:13:36 CET 2002  Jan Hubicka  <jh@suse.cz>
 
 	* ifcvt.c (if_convert): Clear aux_for_blocks early enought.
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 620a16f5d5d2..931f17487ac6 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -6687,11 +6687,13 @@ store_parm_decls ()
 
    This is called after parsing the body of the function definition.
 
-   NESTED is nonzero if the function being finished is nested in another.  */
+   NESTED is nonzero if the function being finished is nested in another.
+   CAN_DEFER_P is nonzero if the function may be deferred.  */
 
 void
-finish_function (nested)
+finish_function (nested, can_defer_p)
      int nested;
+     int can_defer_p;
 {
   tree fndecl = current_function_decl;
 
@@ -6760,7 +6762,7 @@ finish_function (nested)
   if (! nested)
     {
       /* Generate RTL for the body of this function.  */
-      c_expand_body (fndecl, nested, 1);
+      c_expand_body (fndecl, nested, can_defer_p);
 
       /* Let the error reporting routines know that we're outside a
 	 function.  For a nested function, this value is used in
diff --git a/gcc/c-objc-common.c b/gcc/c-objc-common.c
index 416a31042f37..595e6cec7566 100644
--- a/gcc/c-objc-common.c
+++ b/gcc/c-objc-common.c
@@ -326,7 +326,7 @@ finish_cdtor (body)
 
   RECHAIN_STMTS (body, COMPOUND_BODY (body));
 
-  finish_function (0);
+  finish_function (0, 0);
 }
 
 /* Called at end of parsing, but before end-of-file processing.  */
diff --git a/gcc/c-parse.in b/gcc/c-parse.in
index 1628057b7840..fa56bfcfce75 100644
--- a/gcc/c-parse.in
+++ b/gcc/c-parse.in
@@ -394,7 +394,7 @@ fndef:
 	  save_filename save_lineno compstmt_or_error
 		{ DECL_SOURCE_FILE (current_function_decl) = $7;
 		  DECL_SOURCE_LINE (current_function_decl) = $8;
-		  finish_function (0); 
+		  finish_function (0, 1); 
 		  POP_DECLSPEC_STACK; }
 	| declspecs_ts setspecs declarator error
 		{ POP_DECLSPEC_STACK; }
@@ -408,7 +408,7 @@ fndef:
 	  save_filename save_lineno compstmt_or_error
 		{ DECL_SOURCE_FILE (current_function_decl) = $7;
 		  DECL_SOURCE_LINE (current_function_decl) = $8;
-		  finish_function (0); 
+		  finish_function (0, 1); 
 		  POP_DECLSPEC_STACK; }
 	| declspecs_nots setspecs notype_declarator error
 		{ POP_DECLSPEC_STACK; }
@@ -422,7 +422,7 @@ fndef:
 	  save_filename save_lineno compstmt_or_error
 		{ DECL_SOURCE_FILE (current_function_decl) = $6;
 		  DECL_SOURCE_LINE (current_function_decl) = $7;
-		  finish_function (0); 
+		  finish_function (0, 1); 
 		  POP_DECLSPEC_STACK; }
 	| setspecs notype_declarator error
 		{ POP_DECLSPEC_STACK; }
@@ -1586,7 +1586,7 @@ nested_function:
 		{ tree decl = current_function_decl;
 		  DECL_SOURCE_FILE (decl) = $5;
 		  DECL_SOURCE_LINE (decl) = $6;
-		  finish_function (1);
+		  finish_function (1, 1);
 		  pop_function_context (); 
 		  add_decl_stmt (decl); }
 	;
@@ -1616,7 +1616,7 @@ notype_nested_function:
 		{ tree decl = current_function_decl;
 		  DECL_SOURCE_FILE (decl) = $5;
 		  DECL_SOURCE_LINE (decl) = $6;
-		  finish_function (1);
+		  finish_function (1, 1);
 		  pop_function_context (); 
 		  add_decl_stmt (decl); }
 	;
diff --git a/gcc/c-tree.h b/gcc/c-tree.h
index 53d55d4309bc..57c335d0d644 100644
--- a/gcc/c-tree.h
+++ b/gcc/c-tree.h
@@ -192,7 +192,7 @@ extern tree define_label                        PARAMS ((const char *, int,
 							 tree));
 extern void finish_decl                         PARAMS ((tree, tree, tree));
 extern tree finish_enum                         PARAMS ((tree, tree, tree));
-extern void finish_function                     PARAMS ((int));
+extern void finish_function                     PARAMS ((int, int));
 extern tree finish_struct                       PARAMS ((tree, tree, tree));
 extern tree get_parm_info                       PARAMS ((int));
 extern tree grokfield                           PARAMS ((const char *, int, tree, tree, tree));
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 2d689a25eb8e..cfc47024bf53 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -1731,7 +1731,7 @@ build_module_descriptor ()
 
     c_expand_expr_stmt (decelerator);
 
-    finish_function (0);
+    finish_function (0, 0);
 
     return XEXP (DECL_RTL (init_function_decl), 0);
   }
@@ -7265,7 +7265,7 @@ void
 finish_method_def ()
 {
   lang_expand_function_end = objc_expand_function_end;
-  finish_function (0);
+  finish_function (0, 1);
   lang_expand_function_end = NULL;
 
   /* Required to implement _msgSuper. This must be done AFTER finish_function,
-- 
GitLab