summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/integrate.c9
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 53929a17ef1..326e591ff46 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Tue Sep 16 14:22:36 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * integrate.c (expand_inline_function): Move expand_start_bindings
+ after expanding the arguments.
+
Tue Sep 16 11:13:46 1997 Jim Wilson <wilson@cygnus.com>
* expr.c (expand_expr): Remove previous incorrect change.
diff --git a/gcc/integrate.c b/gcc/integrate.c
index c85303bd722..4b99eac49b2 100644
--- a/gcc/integrate.c
+++ b/gcc/integrate.c
@@ -1299,10 +1299,6 @@ expand_inline_function (fndecl, parms, target, ignore, type,
parameter declarations. */
pushlevel (0);
- /* Make a fresh binding contour that we can easily remove. */
- pushlevel (0);
- expand_start_bindings (0);
-
/* Expand the function arguments. Do this first so that any
new registers get created before we allocate the maps. */
@@ -1738,6 +1734,11 @@ expand_inline_function (fndecl, parms, target, ignore, type,
else
abort ();
+ /* Make a fresh binding contour that we can easily remove. Do this after
+ expanding our arguments so cleanups are properly scoped. */
+ pushlevel (0);
+ expand_start_bindings (0);
+
/* Make new label equivalences for the labels in the called function. */
for (i = min_labelno; i < max_labelno; i++)
map->label_map[i] = gen_label_rtx ();