Another platform: IBM zSeries has 24-bit and 31-bit addressing modes, so that means an address stored in a 32-bit register has some of the highest bits ignored when dereferenced. Especially in the past, people stored useful information into those bits, so again, the two pointers are not necessarily equal even though they can point to the same address.
Just like the 48-bit addressing mode of the x86-64 chips most people reading this are using along with the storage of useful information in bits 48-64 (JS engines!).
If they store something there they have to mask it out before dereferencing the pointer. x86-64 doesn't ignore the topmost bits, if you set them wrong the CPU will throw an exception.