Commit 0ad913af by J"orn Rennecke Committed by Joern Rennecke

sh.c (calc_live_regs): Multiply value assigned to *COUNT_PTR by UNITS_PER_WORD.

	* sh.c (calc_live_regs): Multiply value assigned to *COUNT_PTR by
	UNITS_PER_WORD.  Change caller initial_elimination_offset.
	(rounded_frame_size): Take into account that argument pushed has
	changed.  Fix TARGET_ALIGN_DOUBLE problem.

From-SVN: r32152
parent dc5de370
Fri Feb 25 20:02:35 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.c (calc_live_regs): Multiply value assigned to *COUNT_PTR by
UNITS_PER_WORD. Change caller initial_elimination_offset.
(rounded_frame_size): Take into account that argument pushed has
changed. Fix TARGET_ALIGN_DOUBLE problem.
2000-02-25 Geoff Keating <geoffk@cygnus.com> 2000-02-25 Geoff Keating <geoffk@cygnus.com>
* haifa-sched.c (schedule_block): Explain the real reason * haifa-sched.c (schedule_block): Explain the real reason
......
...@@ -3788,12 +3788,15 @@ calc_live_regs (count_ptr, live_regs_mask2) ...@@ -3788,12 +3788,15 @@ calc_live_regs (count_ptr, live_regs_mask2)
} }
} }
*count_ptr = count; *count_ptr = count * UNITS_PER_WORD;
return live_regs_mask; return live_regs_mask;
} }
/* Code to generate prologue and epilogue sequences */ /* Code to generate prologue and epilogue sequences */
/* PUSHED is the number of bytes that are bing pushed on the
stack for register saves. Return the frame size, padded
appropriately so that the stack stays properly aligned. */
static HOST_WIDE_INT static HOST_WIDE_INT
rounded_frame_size (pushed) rounded_frame_size (pushed)
int pushed; int pushed;
...@@ -3801,9 +3804,7 @@ rounded_frame_size (pushed) ...@@ -3801,9 +3804,7 @@ rounded_frame_size (pushed)
HOST_WIDE_INT size = get_frame_size (); HOST_WIDE_INT size = get_frame_size ();
HOST_WIDE_INT align = STACK_BOUNDARY / BITS_PER_UNIT; HOST_WIDE_INT align = STACK_BOUNDARY / BITS_PER_UNIT;
if (TARGET_ALIGN_DOUBLE && pushed & 1) return (size + pushed + align - 1 & -align) - pushed;
size += 4;
return size + align - 1 & -align;
} }
void void
...@@ -4311,7 +4312,7 @@ initial_elimination_offset (from, to) ...@@ -4311,7 +4312,7 @@ initial_elimination_offset (from, to)
total_auto_space = rounded_frame_size (regs_saved); total_auto_space = rounded_frame_size (regs_saved);
target_flags = save_flags; target_flags = save_flags;
total_saved_regs_space = (regs_saved) * 4; total_saved_regs_space = regs_saved;
if (from == ARG_POINTER_REGNUM && to == FRAME_POINTER_REGNUM) if (from == ARG_POINTER_REGNUM && to == FRAME_POINTER_REGNUM)
return total_saved_regs_space + total_auto_space; return total_saved_regs_space + total_auto_space;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment