On Thu, Jun 13, 2024 at 9:37 AM Alexandre Oliva <ol...@adacore.com> wrote:
>
> Hello, Maciej,
>
> On Jun 12, 2024, "Maciej W. Rozycki" <ma...@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.

LGTM, based on a successful bootstrap/regtest report down the reply thread.

Thanks,
Uros.

> ---
>  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 via email to