The use list iteration worked correctly for the load and store case. The atomic instructions happen to have the pointer value as the last visited operand, but we rejected the instruction as simple after the first encountered use. Ignore the use list for the recognized load/store/atomic instructions, and just try to directly replace the known pointer use.