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