aboutsummaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-10-01 07:55:51 +0000
committerRichard Stallman <rms@gnu.org>1992-10-01 07:55:51 +0000
commit1d9d04f8cedd05e5c2a645995cb49849cdc996b0 (patch)
treea08c585b06162a7adae73ce9d94730e5cb051c57 /gcc/explow.c
parent09dafdadf00eb5a4dc940788316b22558e71d29a (diff)
downloadgcc-1d9d04f8cedd05e5c2a645995cb49849cdc996b0.zip
gcc-1d9d04f8cedd05e5c2a645995cb49849cdc996b0.tar.gz
gcc-1d9d04f8cedd05e5c2a645995cb49849cdc996b0.tar.bz2
(allocate_dynamic_stack_space): If STACK_DYNAMIC_OFFSET or STACK_POINTER_OFFSET...
(allocate_dynamic_stack_space): If STACK_DYNAMIC_OFFSET or STACK_POINTER_OFFSET, always round address up to BIGGEST_ALIGNMENT. From-SVN: r2292
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/explow.c b/gcc/explow.c
index 211ce20..4d7d5c5 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -865,7 +865,11 @@ allocate_dynamic_stack_space (size, target, known_align)
#ifdef MUST_ALIGN
+#if !defined (STACK_DYNAMIC_OFFSET) && !defined (STACK_POINTER_OFFSET)
+ /* If we have to round the address up regardless of known_align,
+ make extra space regardless, also. */
if (known_align % BIGGEST_ALIGNMENT != 0)
+#endif
{
if (GET_CODE (size) == CONST_INT)
size = GEN_INT (INTVAL (size)
@@ -875,6 +879,7 @@ allocate_dynamic_stack_space (size, target, known_align)
GEN_INT (BIGGEST_ALIGNMENT / BITS_PER_UNIT - 1),
NULL_RTX, 1, OPTAB_LIB_WIDEN);
}
+
#endif
#ifdef SETJMP_VIA_SAVE_AREA
@@ -952,7 +957,11 @@ allocate_dynamic_stack_space (size, target, known_align)
#endif
#ifdef MUST_ALIGN
+ /* If virtual_stack_dynamic_rtx might not share the alignment of
+ the stack pointer register, we must always realign the stack address. */
+#if !defined (STACK_DYNAMIC_OFFSET) && !defined (STACK_POINTER_OFFSET)
if (known_align % BIGGEST_ALIGNMENT != 0)
+#endif
{
target = expand_divmod (0, CEIL_DIV_EXPR, Pmode, target,
GEN_INT (BIGGEST_ALIGNMENT / BITS_PER_UNIT),