It turns out that D87494 will crash when fed an __int128 with a very large offset. Storing an oversized APInt to an int64_t will assert.
This patch adds a regression test and adjusts the equivalent value collecting code to filter out any values where the offset can't be represented by an int64_t. This means that for very large integers with very large offsets, the variable location will become undef, which is the same behaviour as before D87494.
clang-format: please reformat the code