If the final indices of two GEPs can be proven to not be equal, and the GEP is of a SequentialType (not a StructType), then the two GEPs do not alias.

We have to be careful not to return a false negative when dealing with indices into array types that are larger than the number of elements in the array - in this case there can be a partial alias between the GEPs (it breaks our "must" or "no" assumption). With this patch we're quite conservative about this case and only proceed if all intermediate indices are identical between the two GEPs.

We don't seem to know that here, only below, because of how you've modified the C1,C2 check above. Here, we know only that we don't have equal constants.