From: Richard Kenner Date: Tue, 12 Jul 1994 13:07:53 +0000 (-0400) Subject: (round_push, allocate_dynamic_stack_space): Avoid using CEIL_DIV_EXPR; X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5244db056ba9d864cb79d780e4be2b579068dfd5;p=gcc.git (round_push, allocate_dynamic_stack_space): Avoid using CEIL_DIV_EXPR; add adjustment and use TRUNC_DIV_EXPR instead. From-SVN: r7738 --- diff --git a/gcc/explow.c b/gcc/explow.c index 7f1e196e5a8..0d2445359c4 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -742,7 +742,11 @@ round_push (size) } else { - size = expand_divmod (0, CEIL_DIV_EXPR, Pmode, size, GEN_INT (align), + /* CEIL_DIV_EXPR needs to worry about the addition overflowing, + but we know it can't. So add ourselves and then do TRUNC_DIV_EXPR. */ + size = expand_binop (Pmode, add_optab, size, GEN_INT (align - 1), + NULL_RTX, 1, OPTAB_LIB_WIDEN); + size = expand_divmod (0, TRUNC_DIV_EXPR, Pmode, size, GEN_INT (align), NULL_RTX, 1); size = expand_mult (Pmode, size, GEN_INT (align), NULL_RTX, 1); } @@ -1053,10 +1057,14 @@ allocate_dynamic_stack_space (size, target, known_align) if (known_align % BIGGEST_ALIGNMENT != 0) #endif { - target = expand_divmod (0, CEIL_DIV_EXPR, Pmode, target, + /* CEIL_DIV_EXPR needs to worry about the addition overflowing, + but we know it can't. So add ourselves and then do TRUNC_DIV_EXPR. */ + target = expand_binop (Pmode, add_opatab, target, + GEN_INT (BIGGEST_ALIGNMENT / BITS_PER_UNIT - 1), + NULL_RTX, 1, OPTAB_LIB_WIDEN); + target = expand_divmod (0, TRUNC_DIV_EXPR, Pmode, target, GEN_INT (BIGGEST_ALIGNMENT / BITS_PER_UNIT), NULL_RTX, 1); - target = expand_mult (Pmode, target, GEN_INT (BIGGEST_ALIGNMENT / BITS_PER_UNIT), NULL_RTX, 1);