The patches fix (base, index, offset) match in DAGCombine to combine the following stores/loads (a, b, c char arrays):
for (i = 0; i < n; i += 2) {
char c1 = c{*b]; char c2 = c[*b + 1]; a[i] = c1; a[i + 1] = c2; b++;
}
into (a, c, the same short arrays):
for (i = 0; i < n; i++) {
short c1 = c{*b]; a[i] = c1; b++;
}
Without the patch match returned the following (base, index, offset):
*(a + i) -> (a, i, 0)
*(a + i + 1) -> (a + i, undef, 1)
and loads/stores were not combined because of different base.
Why has IsIndexSignExt been removed here?