diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b07a41b7ba0052b5ca97c05a23b186d7d0382e65..288f5107940cbc829771853f393fe9fc8f74dd4e 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 620a16f5d5d251afa87c33f1c5f82d653ee74e7d..931f17487ac67622aa99549db0ec4cf112081e20 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 416a31042f377721d24c4a2e7f39c5019cefc506..595e6cec75664a987e9eb5ffa85ec9d6ba5320d7 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 1628057b78409e806737893fc91f5455c808a3a6..fa56bfcfce75a5d2225b602c6d29224624a37a9d 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 53d55d4309bc4c72f98766b0caf05127d1feb0d8..57c335d0d644011cff266474560120331b96ca5a 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 2d689a25eb8e66533ff37cfb3e5ed048300b365f..cfc47024bf532ee139ee77d53a8a587799dbc160 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,