[Bug tree-optimization/90270] [8/9/10 Regression] Do not select best induction variable optimization

amker at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Apr 29 03:26:00 GMT 2019


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90270

--- Comment #6 from bin cheng <amker at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #5)
> (In reply to bin cheng from comment #4)
> > On AArch64, iovpts generates following code:
> >   <bb 3> [local count: 954449108]:
> >   # crc_20 = PHI <crc_7(D)(2), crc_12(5)>
> >   # ivtmp.5_18 = PHI <1(2), ivtmp.5_17(5)>
> >   _19 = &final_counts + 18446744073709551612;
> >   _1 = MEM[base: _19, index: ivtmp.5_18, step: 4, offset: 0B];
> >   crc_10 = crcu32 (_1, crc_20);
> >   _5 = &track_counts + 18446744073709551612;
> 
> I thought we had decided &final_counts + 18446744073709551612 would be
> invalid gimple anyways as we are taking the address of one element before.

Could you direct me to the discussion about this decision?  I remember once
raised this question (probably in private).  In this case, we need to revision
ivopts to avoid adding candidates which could violates this.

Anyway, it's an independent issue because the iv_cand could be one element
forwarded as:

> >   <bb 3> [local count: 954449108]:
> >   # crc_20 = PHI <crc_7(D)(2), crc_12(5)>
> >   # ivtmp.5_18 = PHI <0(2), ivtmp.5_17(5)>
> >   _19 = &final_counts;
> >   _1 = MEM[base: _19, index: ivtmp.5_18, step: 4, offset: 0B];
> >   crc_10 = crcu32 (_1, crc_20);
> >   _5 = &track_counts;
> 

Unfortunately, cost computation still has problem to generate this code.


More information about the Gcc-bugs mailing list