This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: possible gcse failure: not able to eliminate redundant loads


"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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]