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.

Reply via email to