diff options
author | Catherine Moore <clm@cygnus.com> | 1999-10-29 15:23:41 +0000 |
---|---|---|
committer | Catherine Moore <clm@gcc.gnu.org> | 1999-10-29 11:23:41 -0400 |
commit | 4fc026cde962981346b29d5040d3012d5292f811 (patch) | |
tree | 2c9f9156ff6a888e6ebe7a498f91f18465ee6e1a /gcc/expr.c | |
parent | 5faf03ae77a43db0e5a685a01eb5b4023b09638f (diff) | |
download | gcc-4fc026cde962981346b29d5040d3012d5292f811.zip gcc-4fc026cde962981346b29d5040d3012d5292f811.tar.gz gcc-4fc026cde962981346b29d5040d3012d5292f811.tar.bz2 |
expr.c (emit_push_insn): New argument alignment_pad.
* expr.c (emit_push_insn): New argument alignment_pad.
Update all callers. Adjust stack pointer based on alignment pad.
* function.c (pad_to_arg_alignment): New argument alignment_pad.
Update all callers. Track alignment_pad if boundary > PARM_BOUNDARY.
(locate_and_pad_parm): New argument alignment_pad. Update all
callers.
* expr.h (emit_push_insn): Update prototype.
(locate_and_pad_parm): Update prototype.
* calls.c (arg_data): Add new field alignment_pad.
(initialize_argument_information): Initialize alignment_pad.
From-SVN: r30257
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -2870,7 +2870,8 @@ get_push_address (size) void emit_push_insn (x, mode, type, size, align, partial, reg, extra, - args_addr, args_so_far, reg_parm_stack_space) + args_addr, args_so_far, reg_parm_stack_space, + alignment_pad) register rtx x; enum machine_mode mode; tree type; @@ -2882,6 +2883,7 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra, rtx args_addr; rtx args_so_far; int reg_parm_stack_space; + rtx alignment_pad; { rtx xinner; enum direction stack_direction @@ -3176,7 +3178,7 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra, 0, args_addr, GEN_INT (args_offset + ((i - not_stack + skip) * UNITS_PER_WORD)), - reg_parm_stack_space); + reg_parm_stack_space, alignment_pad); } else { @@ -3248,6 +3250,9 @@ emit_push_insn (x, mode, type, size, align, partial, reg, extra, if (extra && args_addr == 0 && where_pad == stack_direction) anti_adjust_stack (GEN_INT (extra)); + + if (alignment_pad) + anti_adjust_stack (alignment_pad); } /* Expand an assignment that stores the value of FROM into TO. |