summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-25 20:12:02 +0000
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>2000-02-25 20:12:02 +0000
commitf10edf5aa26c38647581b91710a53585eaba3c0f (patch)
treed7775bea2212e7f6521be0ee9ca5ecb3a52462a4 /gcc
parent28c07da5f67fec0f677a408dc0e54d61374b872c (diff)
downloadppe42-gcc-f10edf5aa26c38647581b91710a53585eaba3c0f.tar.gz
ppe42-gcc-f10edf5aa26c38647581b91710a53585eaba3c0f.zip
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32152 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/sh/sh.c11
2 files changed, 13 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index edb1176f10a..83307d15c62 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+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>
* haifa-sched.c (schedule_block): Explain the real reason
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 7eaf7072dde..6f4566901c5 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -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;
}
/* 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
rounded_frame_size (pushed)
int pushed;
@@ -3801,9 +3804,7 @@ rounded_frame_size (pushed)
HOST_WIDE_INT size = get_frame_size ();
HOST_WIDE_INT align = STACK_BOUNDARY / BITS_PER_UNIT;
- if (TARGET_ALIGN_DOUBLE && pushed & 1)
- size += 4;
- return size + align - 1 & -align;
+ return (size + pushed + align - 1 & -align) - pushed;
}
void
@@ -4311,7 +4312,7 @@ initial_elimination_offset (from, to)
total_auto_space = rounded_frame_size (regs_saved);
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)
return total_saved_regs_space + total_auto_space;
OpenPOWER on IntegriCloud