diff options
author | Richard Stallman <rms@gnu.org> | 1993-11-04 23:12:17 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-11-04 23:12:17 +0000 |
commit | fd28789a7a600be9db838f62e81bf8c86b4d5f34 (patch) | |
tree | d5b64104e8a67cba7943c688d8dc1c4ceaf1aba6 /gcc/integrate.c | |
parent | 57590b41a987613dd6cedfa9fa5a057458ee6274 (diff) | |
download | gcc-fd28789a7a600be9db838f62e81bf8c86b4d5f34.zip gcc-fd28789a7a600be9db838f62e81bf8c86b4d5f34.tar.gz gcc-fd28789a7a600be9db838f62e81bf8c86b4d5f34.tar.bz2 |
(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
Diffstat (limited to 'gcc/integrate.c')
-rw-r--r-- | gcc/integrate.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/gcc/integrate.c b/gcc/integrate.c index e353198..9c1cbae 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. |