On Thu, Jun 22, 2023 at 1:42 AM Thiago Jung Bauermann
<thiago.bauerm...@linaro.org> wrote:
>
>
> Hello,
>
> Jeff Law <jeffreya...@gmail.com> writes:
>
> > On 6/19/23 22:52, Tamar Christina wrote:
> >
> >>> It's a bit hackish, but could we reject the stack pointer for operand1 in 
> >>> the
> >>> stack-tie?  And if we do so, does it help?
> >> Yeah this one I had to defer until later this week to look at closer 
> >> because what I'm
> >> wondering about is whether the optimization should apply to frame related
> >> RTX as well.
> >> Looking at the description of RTX_FRAME_RELATED_P that this optimization 
> >> may
> >> end up de-optimizing RISC targets by creating an offset that is larger 
> >> than offset
> >> which can be used from a SP making reload having to spill.  i.e. sometimes 
> >> the
> >> move was explicitly done. So perhaps it should not apply it to
> >> RTX_FRAME_RELATED_P in find_oldest_value_reg and 
> >> copyprop_hardreg_forward_1?
> >> Other parts of this pass already seems to bail out in similar situations. 
> >> So I needed
> >> to
> >> write some testcases to check what would happen in these cases hence the 
> >> deferral.
> >> to later in the week.
> > Rejecting for RTX_FRAME_RELATED_P would seem reasonable and probably better 
> > in general to
> > me.  The cases where we're looking to clean things up aren't really in the
> > prologue/epilogue, but instead in the main body after register elimination 
> > has turned fp
> > into sp + offset, thus making all kinds of things no longer valid.
>
> The problems I reported were fixed by commits:
>
> 580b74a79146 "aarch64: Robustify stack tie handling"
> 079f31c55318 "aarch64: Fix gcc.target/aarch64/sve/pcs failures"
>
> Thanks!
>
> But unfortunately I'm still seeing bootstrap failures (ICE segmentation
> fault) in today's trunk with build config bootstrap-lto in both
> armv8l-linux-gnueabihf and aarch64-linux-gnu.

If there's not yet a bugreport for this please make sure to open one so
this issue doesn't get lost.

> If I revert commit 6a2e8dcbbd4b "cprop_hardreg: Enable propagation of
> the stack pointer if possible" from trunk then both bootstraps succeed.
>
> Here's the command I'm using to build on armv8l:
>
> ~/src/configure \
>     SHELL=/bin/bash \
>     --with-gnu-as \
>     --with-gnu-ld \
>     --disable-libmudflap \
>     --enable-lto \
>     --enable-shared \
>     --without-included-gettext \
>     --enable-nls \
>     --with-system-zlib \
>     --disable-sjlj-exceptions \
>     --enable-gnu-unique-object \
>     --enable-linker-build-id \
>     --disable-libstdcxx-pch \
>     --enable-c99 \
>     --enable-clocale=gnu \
>     --enable-libstdcxx-debug \
>     --enable-long-long \
>     --with-cloog=no \
>     --with-ppl=no \
>     --with-isl=no \
>     --disable-multilib \
>     --with-float=hard \
>     --with-fpu=neon-fp-armv8 \
>     --with-mode=thumb \
>     --with-arch=armv8-a \
>     --enable-threads=posix \
>     --enable-multiarch \
>     --enable-libstdcxx-time=yes \
>     --enable-gnu-indirect-function \
>     --disable-werror \
>     --enable-checking=yes \
>     --enable-bootstrap \
>     --with-build-config=bootstrap-lto \
>     --enable-languages=c,c++,fortran,lto \
>     && make \
>         profiledbootstrap \
>         SHELL=/bin/bash \
>         -w \
>         -j 40 \
>         CFLAGS_FOR_BUILD="-pipe -g -O2" \
>         CXXFLAGS_FOR_BUILD="-pipe -g -O2" \
>         LDFLAGS_FOR_BUILD="-static-libgcc" \
>         MAKEINFOFLAGS=--force \
>         BUILD_INFO="" \
>         MAKEINFO=echo
>
> And here's the slightly different one for aarch64-linux:
>
> ~/src/configure \
>     SHELL=/bin/bash \
>     --with-gnu-as \
>     --with-gnu-ld \
>     --disable-libmudflap \
>     --enable-lto \
>     --enable-shared \
>     --without-included-gettext \
>     --enable-nls \
>     --with-system-zlib \
>     --disable-sjlj-exceptions \
>     --enable-gnu-unique-object \
>     --enable-linker-build-id \
>     --disable-libstdcxx-pch \
>     --enable-c99 \
>     --enable-clocale=gnu \
>     --enable-libstdcxx-debug \
>     --enable-long-long \
>     --with-cloog=no \
>     --with-ppl=no \
>     --with-isl=no \
>     --disable-multilib \
>     --enable-fix-cortex-a53-835769 \
>     --enable-fix-cortex-a53-843419 \
>     --with-arch=armv8-a \
>     --enable-threads=posix \
>     --enable-multiarch \
>     --enable-libstdcxx-time=yes \
>     --enable-gnu-indirect-function \
>     --disable-werror \
>     --enable-checking=yes \
>     --enable-bootstrap \
>     --with-build-config=bootstrap-lto \
>     --enable-languages=c,c++,fortran,lto \
>     && make \
>         profiledbootstrap \
>         SHELL=/bin/bash \
>         -w \
>         -j 40 \
>         LDFLAGS_FOR_TARGET="-Wl,-fix-cortex-a53-843419" \
>         CFLAGS_FOR_BUILD="-pipe -g -O2" \
>         CXXFLAGS_FOR_BUILD="-pipe -g -O2" \
>         LDFLAGS_FOR_BUILD="-static-libgcc" \
>         MAKEINFOFLAGS=--force \
>         BUILD_INFO="" \
>         MAKEINFO=echo
>
> --
> Thiago

Reply via email to