From: Richard Stallman Date: Thu, 4 Nov 1993 23:12:17 +0000 (+0000) Subject: (expand_inline_function): Don't call push_temp_slots... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fd28789a7a600be9db838f62e81bf8c86b4d5f34;p=gcc.git (expand_inline_function): Don't call push_temp_slots... (expand_inline_function): Don't call push_temp_slots, free_temp_slots, and pop_temp_slots when handling parameters, because they might end up in a temp slot. From-SVN: r5999 --- diff --git a/gcc/integrate.c b/gcc/integrate.c index e3531986553..9c1cbaea9e4 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -1353,7 +1353,9 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add register number fits in const_equiv_map. Then we store all non-register parameters into their memory location. */ - push_temp_slots (); + /* Don't try to free temp stack slots here, because we may put one of the + parameters into a temp stack slot. */ + for (i = 0; i < nargs; i++) { rtx copy = arg_vals[i]; @@ -1422,9 +1424,6 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add } else abort (); - - /* Free any temporaries we made setting up this parameter. */ - free_temp_slots (); } /* Now do the parameters that will be placed in memory. */ @@ -1454,14 +1453,9 @@ expand_inline_function (fndecl, parms, target, ignore, type, structure_value_add if (! memory_address_p (GET_MODE (temp), XEXP (temp, 0))) temp = change_address (temp, VOIDmode, XEXP (temp, 0)); store_expr (arg_trees[i], temp, 0); - - /* Free any temporaries we made setting up this parameter. */ - free_temp_slots (); } } - pop_temp_slots (); - /* Deal with the places that the function puts its result. We are driven by what is placed into DECL_RESULT.