This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: possible gcse failure: not able to eliminate redundant loads
- From: Dan Nicolaescu <dann at godzilla dot ics dot uci dot edu>
- To: "Sanjiv Kumar Gupta, Noida" <sanjivg at noida dot hcltech dot com>
- Cc: Daniel Berlin <dberlin at dberlin dot org>, Dale Johannesen <dalej at apple dot com>, gcc at gcc dot gnu dot org
- Date: Thu, 12 Dec 2002 22:41:38 -0800
- Subject: Re: possible gcse failure: not able to eliminate redundant loads
- References: <E04CF3F88ACBD5119EFE00508BBB2121061C2FC5@exch-01.noida.hcltech.com>
"Sanjiv Kumar Gupta, Noida" <sanjivg@noida.hcltech.com> writes:
>
> >> We have the code for it, but alias.c isn't helping.
>
> >It looks like memrefs_conflict_p is supposed to be able to prove that
> a[2] and a[4] don't alias, I wonder why it's not working?
>
> It can detect different offsets in 'reg+offset' forms of addresses
> but can not distinguish between two pointer regs.
> In this case, the machine (sh4) doesn't support reg+offset addressing
> for double-precision values.
> I am working on memrefs_conflict_p to handle this.
It works just fine on SPARC, so it might be something specific to your
port...
ldd [%o0+8], %f8
cmp %o2, 2 ! i
bg .LL8
std %f8, [%o1+16]
add %o2, 8, %o2 ! i, i
.LL10:
cmp %o2, 2 ! i
ble,a .LL10
add %o2, 8, %o2 ! i, i
std %f8, [%o0+32]
.LL8:
nop
retl
nop