explow: Avoid unnecessary alignment operations

Message ID mpta5rs9hjr.fsf@arm.com
State Accepted
Headers
Series explow: Avoid unnecessary alignment operations |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Richard Sandiford Nov. 5, 2023, 6:33 p.m. UTC
  align_dynamic_address would output alignment operations even
for a required alignment of 1 byte.

Tested on aarch64-linux-gnu & x86_64-linux-gnu.  OK to install?

Richard


gcc/
	* explow.cc (align_dynamic_address): Do nothing if the required
	alignment is a byte.
---
 gcc/explow.cc | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Richard Biener Nov. 6, 2023, 7:17 a.m. UTC | #1
On Sun, Nov 5, 2023 at 7:33 PM Richard Sandiford
<richard.sandiford@arm.com> wrote:
>
> align_dynamic_address would output alignment operations even
> for a required alignment of 1 byte.
>
> Tested on aarch64-linux-gnu & x86_64-linux-gnu.  OK to install?

OK

> Richard
>
>
> gcc/
>         * explow.cc (align_dynamic_address): Do nothing if the required
>         alignment is a byte.
> ---
>  gcc/explow.cc | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/gcc/explow.cc b/gcc/explow.cc
> index aa64d5e906c..0be6d2629c9 100644
> --- a/gcc/explow.cc
> +++ b/gcc/explow.cc
> @@ -1201,6 +1201,9 @@ record_new_stack_level (void)
>  rtx
>  align_dynamic_address (rtx target, unsigned required_align)
>  {
> +  if (required_align == BITS_PER_UNIT)
> +    return 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.  */
> --
> 2.25.1
>
  

Patch

diff --git a/gcc/explow.cc b/gcc/explow.cc
index aa64d5e906c..0be6d2629c9 100644
--- a/gcc/explow.cc
+++ b/gcc/explow.cc
@@ -1201,6 +1201,9 @@  record_new_stack_level (void)
 rtx
 align_dynamic_address (rtx target, unsigned required_align)
 {
+  if (required_align == BITS_PER_UNIT)
+    return 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.  */