Before this patch, the following stores in merge_fail would fail to be merged, while they would get merged in merge_ok:
void use(unsigned long long *); void merge_fail(unsigned key, unsigned index) { unsigned long long args[8]; args[0] = key; args[1] = index; use(args); } void merge_ok(unsigned long long *dst, unsigned a, unsigned b) { dst[0] = a; dst[1] = b; }
The reason is that getMemOpBaseImmOfs would return false for FI base operands.
This adds support for this.