Mercurial > hg > graal-compiler
diff src/share/vm/opto/memnode.cpp @ 3248:e6beb62de02d
7032963: StoreCM shouldn't participate in store elimination
Reviewed-by: kvn
author | never |
---|---|
date | Tue, 05 Apr 2011 19:14:03 -0700 |
parents | b099aaf51bf8 |
children | 92add02409c9 |
line wrap: on
line diff
--- a/src/share/vm/opto/memnode.cpp Fri Feb 18 10:07:34 2011 -0800 +++ b/src/share/vm/opto/memnode.cpp Tue Apr 05 19:14:03 2011 -0700 @@ -2159,9 +2159,12 @@ Node* mem = in(MemNode::Memory); Node* address = in(MemNode::Address); - // Back-to-back stores to same address? Fold em up. - // Generally unsafe if I have intervening uses... - if (mem->is_Store() && phase->eqv_uncast(mem->in(MemNode::Address), address)) { + // Back-to-back stores to same address? Fold em up. Generally + // unsafe if I have intervening uses... Also disallowed for StoreCM + // since they must follow each StoreP operation. Redundant StoreCMs + // are eliminated just before matching in final_graph_reshape. + if (mem->is_Store() && phase->eqv_uncast(mem->in(MemNode::Address), address) && + mem->Opcode() != Op_StoreCM) { // Looking at a dead closed cycle of memory? assert(mem != mem->in(MemNode::Memory), "dead loop in StoreNode::Ideal");