On Mon, Jun 10, 2024 at 3:20 PM Roger Sayle <ro...@nextmovesoftware.com> wrote:
>
>
> This patch fixes PR target/115397, a recent regression caused by my
> ternlog patch that results in an ICE (building numpy) with -m32 -fPIC.
> The problem is that ix86_broadcast_from_constant, which calls
> get_pool_constant, doesn't handle the UNSPEC_GOTOFF that's created by
> calling validize_mem when using -fPIC on i686.  The logic here is a bit
> convoluted (and my future patches will clean some of this up), but the
> simplest fix is to call ix86_broadcast_from_constant between the calls
> to force_const_mem and the call to validize_mem.
>
> Perhaps a better solution might be to call targetm.delegitimize_address
> from the middle-end's get_pool_constant, but ultimately the best approach
> would be to not place things in the constant pool if we don't need to.
> My plans to move (broadcast) constant handling from expand to split1
> should simplify this.
>
> This patch has been tested on x86_64-pc-linux-gnu with make bootstrap
> and make -k check, both with and without --target_board=unix{-m32}
> with no new failures.  Ok for mainline?
Ok.
>
>
> 2024-06-10  Roger Sayle  <ro...@nextmovesoftware.com>
>
> gcc/ChangeLog
>         PR target/115397
>         * config/i386/i386-expand.cc (ix86_expand_ternlog): Move call to
>         ix86_broadcast_from_constant before call to validize_mem, but after
>         call to force_const_mem.
>
> gcc/testsuite/ChangeLog
>         PR target/115397
>         * gcc.target/i386/pr115397.c: New test case.
>
>
> Thanks in advance (and sorry for any inconvenience),
> Roger
>


-- 
BR,
Hongtao

Reply via email to