This fixes https://bugs.llvm.org/show_bug.cgi?id=39908.
The evaluateGEPOffsetExpression() function simplifies GEP offsets for use in comparisons against zero, basically by converting X*Scale+Offset==0 to X+Offset/Scale==0 if Scale divides Offset. However, before this is done, Offset is masked down to the pointer size. This results in incorrect results for negative Offsets, because we basically end up dividing the 32-bit offset *zero* extended to 64-bit bits (rather than sign extended).
The masking code could be fixed to properly replicate sign bits. However, as we are operating on inbounds GEPs here, I would expect that we do not have to care about address space overflows, because these would result in poison anyway. If that understanding is correct, then we can just drop this code entirely, which is what this patch does.