In https://llvm.org/bugs/show_bug.cgi?id=23580, we saw a testcase for which loop vectorizer cannot generate wide load because it cannot recognize the load to be inter-interation consecutive without gep merging. That testcase showed the usage of gep merging in analysis besides basicaa.
To make the consecutive load analysis more effective, but still control the negative side effect of gep merging, the patch allows the source gep to be merged with the target gep if 1. the source gep only has one use and 2. both geps are in the same BB. This should cover the most common cases.
spec2000 and internal performance testing show no regression.
This looks a bit funny, can you clang-format this?