aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Wehle <john@feith.com>1999-03-05 01:19:25 +0000
committerJeff Law <law@gcc.gnu.org>1999-03-04 18:19:25 -0700
commit6f67a30d15afdf01e89ad5b8c88f5ad9bef94bb6 (patch)
tree33690e0e0c157ed4d3c3cf1c26664e7cdb9bf2ab
parent01587fa2fe4deff7bf106fa223d6c1ed5fc75db5 (diff)
downloadgcc-6f67a30d15afdf01e89ad5b8c88f5ad9bef94bb6.zip
gcc-6f67a30d15afdf01e89ad5b8c88f5ad9bef94bb6.tar.gz
gcc-6f67a30d15afdf01e89ad5b8c88f5ad9bef94bb6.tar.bz2
function.c (assign_stack_temp_for_type): Abort if mode == Blkmode and align is less than BIGGEST_ALIGNMENT / BITS_PER_UNIT.
* 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. Bootstrapped on the PA and x86. From-SVN: r25593
-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;