calls.c (store_one_arg): Mark any slots used for the argument as in-use immediately after we're done...
* calls.c (store_one_arg): Mark any slots used for the argument as in-use immediately after we're done saving any slots which will be overwritten by this argument. From-SVN: r25256
This commit is contained in:
parent
6756293cc3
commit
b564df0678
2 changed files with 14 additions and 7 deletions
|
@ -1,3 +1,9 @@
|
|||
Tue Feb 16 21:29:38 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* calls.c (store_one_arg): Mark any slots used for the argument
|
||||
as in-use immediately after we're done saving any slots which
|
||||
will be overwritten by this argument.
|
||||
|
||||
Tue Feb 16 21:02:07 1999 Anton Hartl <toni@devsoft.com>
|
||||
|
||||
* rs6000.md (call_value): Fix typo.
|
||||
|
|
15
gcc/calls.c
15
gcc/calls.c
|
@ -3558,6 +3558,14 @@ store_one_arg (arg, argblock, may_be_alloca, variable_size,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Now that we have saved any slots that will be overwritten by this
|
||||
store, mark all slots this store will use. We must do this before
|
||||
we actually expand the argument since the expansion itself may
|
||||
trigger library calls which might need to use the same stack slot. */
|
||||
if (argblock && ! variable_size && arg->stack)
|
||||
for (i = lower_bound; i < upper_bound; i++)
|
||||
stack_usage_map[i] = 1;
|
||||
#endif
|
||||
|
||||
/* If this isn't going to be placed on both the stack and in registers,
|
||||
|
@ -3733,11 +3741,4 @@ store_one_arg (arg, argblock, may_be_alloca, variable_size,
|
|||
preserve_temp_slots (NULL_RTX);
|
||||
free_temp_slots ();
|
||||
pop_temp_slots ();
|
||||
|
||||
#ifdef ACCUMULATE_OUTGOING_ARGS
|
||||
/* Now mark the segment we just used. */
|
||||
if (argblock && ! variable_size && arg->stack)
|
||||
for (i = lower_bound; i < upper_bound; i++)
|
||||
stack_usage_map[i] = 1;
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue