aboutsummaryrefslogtreecommitdiff
path: root/gcc/integrate.c
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-11-04 23:12:17 +0000
committerRichard Stallman <rms@gnu.org>1993-11-04 23:12:17 +0000
commitfd28789a7a600be9db838f62e81bf8c86b4d5f34 (patch)
treed5b64104e8a67cba7943c688d8dc1c4ceaf1aba6 /gcc/integrate.c
parent57590b41a987613dd6cedfa9fa5a057458ee6274 (diff)
downloadgcc-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.c12
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.