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.