https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90270
--- Comment #8 from Richard Biener <rguenth 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. No, it's not invalid GIMPLE. It's just address computation. We only assume we stay inside 'final_counts' here. What we need to avoid is IVs based on &a - &b since that may confuse PTA.