aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/function.c12
2 files changed, 14 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0a6bf91..3b00577 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+Fri Mar 5 02:14:54 1999 John Wehle (john@feith.com)
+
+ * function.c (assign_stack_temp_for_type): Abort
+ if mode == Blkmode and align is less than
+ BIGGEST_ALIGNMENT / BITS_PER_UNIT.
+ (assign_stack_temp_for_type): Round the size parameter
+ passed to assign_stack_local instead of size itself.
+
Thu Mar 4 15:00:35 1999 Richard Henderson <rth@cygnus.com>
* flow.c (delete_unreachable_blocks): Mark blocks as they
diff --git a/gcc/function.c b/gcc/function.c
index 4d67366..d6d5aa6 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -998,12 +998,12 @@ assign_stack_temp_for_type (mode, size, keep, type)
So for requests which depended on the rounding of SIZE, we go ahead
and round it now. We also make sure ALIGNMENT is at least
BIGGEST_ALIGNMENT. */
- if (mode == BLKmode)
- {
- align = MAX (align, BIGGEST_ALIGNMENT / BITS_PER_UNIT);
- size = CEIL_ROUND (size, align);
- }
- p->slot = assign_stack_local (mode, size, align);
+ if (mode == BLKmode && align < (BIGGEST_ALIGNMENT / BITS_PER_UNIT))
+ abort();
+ p->slot = assign_stack_local (mode,
+ mode == BLKmode
+ ? CEIL_ROUND (size, align) : size,
+ align);
p->align = align;
p->alias_set = alias_set;