As memory system performance becomes an increasingly dominant factor in overall system performance, it is im-portant to optimize programs for memory related opera-tions. This paper concerns static analysis to detect redun-dant memory operations and enable other compiler trans-formations to remove such redundant operations. We present an extended global value numbering algorithm to detect redundant memory operations. The key of the new algorithm is a novel SSA-based representation for memory state which allows accurate reasoning about memory state. Using this representation, the algorithm can trace values through memory operations to detect equivalence in the same way that it traces them through register-based scalar operations. Thus it disc...