aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-12-16 16:24:35 -0700
committerJeff Law <law@gcc.gnu.org>1993-12-16 16:24:35 -0700
commit3bf35ccb68dca6d5d1b9da6f35327a12c66b3fd4 (patch)
tree20c7ba176d62dd01ddf9a9e591fdd2f3b716184b /gcc/config/pa
parentba0bfdacea4838d2b8d9c2f66d399837533de99d (diff)
downloadgcc-3bf35ccb68dca6d5d1b9da6f35327a12c66b3fd4.zip
gcc-3bf35ccb68dca6d5d1b9da6f35327a12c66b3fd4.tar.gz
gcc-3bf35ccb68dca6d5d1b9da6f35327a12c66b3fd4.tar.bz2
pa.c (compute_frame_size): Remove implicit assumption that %r4 is the frame pointer.
* pa.c (compute_frame_size): Remove implicit assumption that %r4 is the frame pointer. From-SVN: r6247
Diffstat (limited to 'gcc/config/pa')
-rw-r--r--gcc/config/pa/pa.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index d31794e..6b677d9 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -1937,22 +1937,13 @@ compute_frame_size (size, fregs_live)
we need to add this in because of STARTING_FRAME_OFFSET. */
fsize = size + (size || frame_pointer_needed ? 8 : 0);
- /* fp is stored in a special place. */
- if (frame_pointer_needed)
+ for (i = 18; i >= 3; i--)
{
- for (i = 18; i >= 5; i--)
- if (regs_ever_live[i])
- fsize += 4;
-
- if (regs_ever_live[3])
+ /* fp is stored in a special place. */
+ if (regs_ever_live[i]
+ && (i != FRAME_POINTER_REGNUM || !frame_pointer_needed))
fsize += 4;
}
- else
- {
- for (i = 18; i >= 3; i--)
- if (regs_ever_live[i])
- fsize += 4;
- }
fsize = (fsize + 7) & ~7;
if (!TARGET_SNAKE)