aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/function.c b/gcc/function.c
index bb6a9ae..4ce2259 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -4479,7 +4479,6 @@ get_last_funcdef_no (void)
void
allocate_struct_function (tree fndecl, bool abstract_p)
{
- tree result;
tree fntype = fndecl ? TREE_TYPE (fndecl) : NULL_TREE;
cfun = ggc_alloc_cleared_function ();
@@ -4498,8 +4497,13 @@ allocate_struct_function (tree fndecl, bool abstract_p)
DECL_STRUCT_FUNCTION (fndecl) = cfun;
cfun->decl = fndecl;
current_function_funcdef_no = get_next_funcdef_no ();
+ }
+
+ invoke_set_current_function_hook (fndecl);
- result = DECL_RESULT (fndecl);
+ if (fndecl != NULL_TREE)
+ {
+ tree result = DECL_RESULT (fndecl);
if (!abstract_p && aggregate_value_p (result, fndecl))
{
#ifdef PCC_STATIC_STRUCT_RETURN
@@ -4518,8 +4522,6 @@ allocate_struct_function (tree fndecl, bool abstract_p)
but is this worth the hassle? */
cfun->can_throw_non_call_exceptions = flag_non_call_exceptions;
}
-
- invoke_set_current_function_hook (fndecl);
}
/* This is like allocate_struct_function, but pushes a new cfun for FNDECL