Exploiting Pointer and Location Equivalence to Optimize Pointer Analysis