public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Alexandre Oliva <oliva@adacore.com>
To: "Maciej W. Rozycki" <macro@orcam.me.uk>
Cc: Richard Henderson <rth@gcc.gnu.org>, gcc-patches@gcc.gnu.org
Subject: [PATCH] [alpha] adjust MEM alignment for block move [PR115459] (was: Re: [PATCH v2] [PR100106] Reject unaligned subregs when strict alignment is required)
Date: Thu, 13 Jun 2024 04:36:44 -0300	[thread overview]
Message-ID: <ory179fg4z.fsf_-_@lxoliva.fsfla.org> (raw)
In-Reply-To: <alpine.DEB.2.21.2406111607210.9248@angie.orcam.me.uk> (Maciej W. Rozycki's message of "Wed, 12 Jun 2024 13:39:52 +0100 (BST)")

Hello, Maciej,

On Jun 12, 2024, "Maciej W. Rozycki" <macro@orcam.me.uk> wrote:

>  This has regressed building the `alpha-linux-gnu' target, in libada, as 
> from commit d6b756447cd5 including GCC 14 and up to current GCC 15 trunk:

> | Error detected around g-debpoo.adb:1896:8                                |

> I have filed PR #115459.

Thanks!

This was tricky to duplicate without access to an alpha-linux-gnu
machine.  I ended up building an uberbaum tree with --disable-shared
--disable-threads --enable-languages=ada up to all-target-libgcc, then I
replaced gcc/collect2 with a wrapper script that dropped crt[1in].o and
-lc, so that link tests in libada/configure would succeed without glibc
for the target.  libada still wouldn't build, because of the missing
glibc headers, but I could compile g-depboo.adb with -I pointing at a
x86_64-linux-gnu's gcc/ada/rts build tree, and with that, at -O2, I
could trigger the problem and investigate it.  And with the following
patch, the problem seems to be gone.

Maciej, would you be so kind as to give it a spin with a native
regstrap?  TIA,

Richard, is this ok to install if regstrapping succeeds?


Before issuing loads or stores for a block move, adjust the MEM
alignments if analysis of the addresses enabled the inference of
stricter alignment.  This ensures that the MEMs are sufficiently
aligned for the corresponding insns, which avoids trouble in case of
e.g. substitutions into SUBREGs.


for  gcc/ChangeLog

	PR target/115459
	* config/alpha/alpha.cc (alpha_expand_block_move): Adjust
	MEMs to match inferred alignment.
---
 gcc/config/alpha/alpha.cc |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/gcc/config/alpha/alpha.cc b/gcc/config/alpha/alpha.cc
index 1126cea1f7ba2..e090e74b9d073 100644
--- a/gcc/config/alpha/alpha.cc
+++ b/gcc/config/alpha/alpha.cc
@@ -3820,6 +3820,12 @@ alpha_expand_block_move (rtx operands[])
           else if (a >= 16 && c % 2 == 0)
 	    src_align = 16;
 	}
+
+      if (MEM_P (orig_src) && MEM_ALIGN (orig_src) < src_align)
+	{
+	  orig_src = shallow_copy_rtx (orig_src);
+	  set_mem_align (orig_src, src_align);
+	}
     }
 
   tmp = XEXP (orig_dst, 0);
@@ -3841,6 +3847,12 @@ alpha_expand_block_move (rtx operands[])
           else if (a >= 16 && c % 2 == 0)
 	    dst_align = 16;
 	}
+
+      if (MEM_P (orig_dst) && MEM_ALIGN (orig_dst) < dst_align)
+	{
+	  orig_dst = shallow_copy_rtx (orig_dst);
+	  set_mem_align (orig_dst, dst_align);
+	}
     }
 
   ofs = 0;


-- 
Alexandre Oliva, happy hacker            https://FSFLA.org/blogs/lxo/
   Free Software Activist                   GNU Toolchain Engineer
More tolerance and less prejudice are key for inclusion and diversity
Excluding neuro-others for not behaving ""normal"" is *not* inclusive

  reply	other threads:[~2024-06-13  7:37 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-05  6:52 [PATCH] [PR100106] Reject unaligned subregs when strict alignment is required Alexandre Oliva
2022-05-05  7:59 ` Richard Sandiford
2022-05-05 13:50   ` Segher Boessenkool
2022-05-06 10:57     ` [PATCH v2 2/2] " Alexandre Oliva
2022-05-09  8:09       ` Richard Sandiford
2022-05-05 14:33 ` [PATCH] " Segher Boessenkool
2022-05-06  2:41   ` [PATCH v2] " Alexandre Oliva
2022-07-09 17:14     ` Jeff Law
2023-05-24  5:39     ` Alexandre Oliva
2023-05-24  9:04       ` Richard Biener
2024-06-12 12:39     ` Maciej W. Rozycki
2024-06-13  7:36       ` Alexandre Oliva [this message]
2024-06-13 11:49         ` [PATCH] [alpha] adjust MEM alignment for block move [PR115459] (was: Re: [PATCH v2] [PR100106] Reject unaligned subregs when strict alignment is required) Maciej W. Rozycki
2024-06-13 15:21           ` Joseph Myers
2024-06-18  9:59           ` Maciej W. Rozycki
2022-05-06 18:04 ` [PATCH] [PR100106] Reject unaligned subregs when strict alignment is required Vladimir Makarov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ory179fg4z.fsf_-_@lxoliva.fsfla.org \
    --to=oliva@adacore.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=macro@orcam.me.uk \
    --cc=rth@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).