(expand_inline_function): Don't call push_temp_slots...
authorRichard Stallman <rms@gnu.org>
Thu, 4 Nov 1993 23:12:17 +0000 (23:12 +0000)
committerRichard Stallman <rms@gnu.org>
Thu, 4 Nov 1993 23:12:17 +0000 (23:12 +0000)
(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

gcc/integrate.c

index e3531986553a84f59f8fe2e6b8d1481399731957..9c1cbaea9e48c4f35f91d917697510f865cec021 100644 (file)
@@ -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.