BasicAA currently tries to determine that the offset is positive by checking whether all variable indices are positive based on known bits, multiplied by a positive scale. However, this is incorrect if the scale multiplication might overflow. In the modified test case the original value is positive, but may be negative after a left shift.
Fix this by converting known bits into a constant range and reusing the range-based logic, which handles overflow correctly.
clang-format: please reformat the code