https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111683
--- Comment #19 from Richard Biener <rguenth at gcc dot gnu.org> --- But note that {0, +, 3 } and {2, + , 3} with size 2 will still eventually overlap. See dr_analyze_indices where we attempt to make DR_INIT a multiple of the element size (probably also not a perfect solution). In the end representing the access function for the pointer with byte granularity is a mistake and it should be translated to be based on the access size. That of course makes a byte step of 3 with an access size of 2 not representable (but it avoids these kind of issues). The other possibility is to filter the remaining problematic cases during dependence analysis itself where we see both DR_INITs. As said the index based dependence analysis doesn't know about such thing as partial element overlaps. For the PR at hand your patch looks reasonable, but I think there's a problem in how we handle the pointer-based access functions.