https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111683
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rsandifo at gcc dot gnu.org --- Comment #15 from Richard Biener <rguenth at gcc dot gnu.org> --- the problem is in dependence analysis itself - by design classic dependence analysis relies on a[i] and a[i+1] not aliasing but for DRs like Creating dr for MEM[(U * {ref-all})_1] analyze_innermost: success. base_address: &c offset from base address: 0 constant offset from base address: 0 step: 8 base alignment: 32 base misalignment: 0 offset alignment: 128 step alignment: 8 base_object: MEM[(U * {ref-all})&c] Access function 0: {0B, +, 8}_1 The access function evolves in a way that this doesn't hold. It might be tempting to fail data-ref analysis itself but it's really subscript dependence testing that doesn't work. OTOH we already have code in dr_analyze_indices to deal with similar cases concerning overlap by adjusted base offset. Note in theory we handle non-constant increments, so we eventually would have to ditch support for those at all.