From 4fc026cde962981346b29d5040d3012d5292f811 Mon Sep 17 00:00:00 2001 From: Catherine Moore Date: Fri, 29 Oct 1999 15:23:41 +0000 Subject: 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 --- gcc/expr.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'gcc/expr.c') diff --git a/gcc/expr.c b/gcc/expr.c index e509ca4..3655960 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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. -- cgit v1.1