On Fri, 9 May 2025, Jakub Jelinek wrote:

> On Fri, May 09, 2025 at 09:17:23AM +0200, Richard Biener wrote:
> > RTL DSE forms store groups from unique invariant bases but that is
> > confused when presented with constant addresses where it assigns
> > one store group per unique address.  That causes it to not consider
> > 0x101:QI to alias 0x100:SI.  Constant accesses can really alias
> > to every object, in practice they appear for I/O and for access
> > to objects fixed via linker scripts for example.  So simply avoid
> > registering a store group for them.
> > 
> > Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
> > 
> > OK?
> > 
> > Thanks,
> > Richard.
> > 
> >     PR rtl-optimization/120182
> >     * dse.cc (canon_address): Constant addresses have no
> >     separate store group.
> > 
> >     * gcc.dg/torture/pr120182.c: New testcase.
> > ---
> >  gcc/dse.cc                              |  5 ++-
> >  gcc/testsuite/gcc.dg/torture/pr120182.c | 42 +++++++++++++++++++++++++
> >  2 files changed, 46 insertions(+), 1 deletion(-)
> >  create mode 100644 gcc/testsuite/gcc.dg/torture/pr120182.c
> > 
> > diff --git a/gcc/dse.cc b/gcc/dse.cc
> > index ffc86ffabe5..2b99c660a9a 100644
> > --- a/gcc/dse.cc
> > +++ b/gcc/dse.cc
> > @@ -1190,7 +1190,10 @@ canon_address (rtx mem,
> >        address = strip_offset_and_add (address, offset);
> >  
> >        if (ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (mem))
> > -     && const_or_frame_p (address))
> > +     && const_or_frame_p (address)
> > +     /* Literal addresses can alias any base, avoid creating a
> > +        group for them.  */
> > +     && ! CONST_INT_P (address))
> 
> Perhaps better CONST_SCALAR_INT_P instead of CONST_INT_P?

Do we ever get a wide_int for Pmode/ptr_mode?  But sure, I can
fix it that way.

Richard.

> Otherwise LGTM.
> 
>       Jakub
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Reply via email to