aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1999-05-20 16:22:34 -0600
committerJeff Law <law@gcc.gnu.org>1999-05-20 16:22:34 -0600
commit1474e30354b1a0246bb809b1facf1a3b9d4604a9 (patch)
tree417ae3edbc2e199490a83bc4e074428aec9ff1b1 /gcc/function.c
parentd08940b2c252d872b47eeb4ba6939ffd987da65e (diff)
downloadgcc-1474e30354b1a0246bb809b1facf1a3b9d4604a9.zip
gcc-1474e30354b1a0246bb809b1facf1a3b9d4604a9.tar.gz
gcc-1474e30354b1a0246bb809b1facf1a3b9d4604a9.tar.bz2
[multiple changes]
Thu May 20 10:00:42 1999 Stephen L Moshier <moshier@world.std.com> * Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include. Thu May 20 09:58:57 1999 Jan Hubicka <hubicka@freesoft.cz> * function.c (assign_stack_local): Align stack slot propertly. (assign_outer_stack_local): Likewise. From-SVN: r27073
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 0937844..f41982e 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -786,6 +786,10 @@ assign_stack_local (mode, size, align)
else
alignment = align / BITS_PER_UNIT;
+#ifdef FRAME_GROWS_DOWNWARD
+ frame_offset -= size;
+#endif
+
/* Round frame offset to that alignment.
We must be careful here, since FRAME_OFFSET might be negative and
division with a negative dividend isn't as well defined as we might
@@ -802,10 +806,6 @@ assign_stack_local (mode, size, align)
if (BYTES_BIG_ENDIAN && mode != BLKmode)
bigend_correction = size - GET_MODE_SIZE (mode);
-#ifdef FRAME_GROWS_DOWNWARD
- frame_offset -= size;
-#endif
-
/* If we have already instantiated virtual registers, return the actual
address relative to the frame pointer. */
if (virtuals_instantiated)
@@ -871,6 +871,10 @@ assign_outer_stack_local (mode, size, align, function)
else
alignment = align / BITS_PER_UNIT;
+#ifdef FRAME_GROWS_DOWNWARD
+ function->frame_offset -= size;
+#endif
+
/* Round frame offset to that alignment. */
#ifdef FRAME_GROWS_DOWNWARD
function->frame_offset = FLOOR_ROUND (function->frame_offset, alignment);
@@ -883,9 +887,6 @@ assign_outer_stack_local (mode, size, align, function)
if (BYTES_BIG_ENDIAN && mode != BLKmode)
bigend_correction = size - GET_MODE_SIZE (mode);
-#ifdef FRAME_GROWS_DOWNWARD
- function->frame_offset -= size;
-#endif
addr = plus_constant (virtual_stack_vars_rtx,
function->frame_offset + bigend_correction);
#ifndef FRAME_GROWS_DOWNWARD