aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-06-14 17:03:45 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-06-14 17:03:45 -0400
commitc816db88c31a93b91dfeed2431b0928eefc89e08 (patch)
tree43730303b796cad5742df5384e76e17fd2153c44 /gcc
parentbacbde186e2ccaf1cbce0d8f5ae52f3f60adac19 (diff)
downloadgcc-c816db88c31a93b91dfeed2431b0928eefc89e08.zip
gcc-c816db88c31a93b91dfeed2431b0928eefc89e08.tar.gz
gcc-c816db88c31a93b91dfeed2431b0928eefc89e08.tar.bz2
(expand_builtin_apply_args): Put back original register save and
restore order. From-SVN: r9952
Diffstat (limited to 'gcc')
-rw-r--r--gcc/expr.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 1bf40c8..828916c 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8156,14 +8156,8 @@ expand_builtin_apply_args ()
if (struct_value_rtx)
size += GET_MODE_SIZE (Pmode);
- /* Save each register used in calling a function to the block.
- Doing this in reverse order makes for much more compact code
- for i386 and family. If we do this in reverse order, a simple
- series of pops and stores will be generated. If we do this
- in ascending order, the pops and stores will be littered with
- stack swaps as well. Since the order is largely irrelevant for
- all other architectures, we use the optimal order for the i386. */
- for (regno = FIRST_PSEUDO_REGISTER; regno--;)
+ /* Save each register used in calling a function to the block. */
+ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
if ((mode = apply_args_mode[regno]) != VOIDmode)
{
rtx tem;
@@ -8263,10 +8257,8 @@ expand_builtin_apply (function, arguments, argsize)
size += GET_MODE_SIZE (Pmode);
/* Restore each of the registers previously saved. Make USE insns
- for each of these registers for use in making the call.
- Doing this in reverse order makes for much more compact code
- for i386 and family. */
- for (regno = FIRST_PSEUDO_REGISTER; regno--; )
+ for each of these registers for use in making the call. */
+ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
if ((mode = apply_args_mode[regno]) != VOIDmode)
{
align = GET_MODE_ALIGNMENT (mode) / BITS_PER_UNIT;