Mercurial > hg > graal-compiler
diff src/share/vm/opto/memnode.cpp @ 3284:286c498ae0d4
Merge
author | kvn |
---|---|
date | Fri, 29 Apr 2011 11:15:30 -0700 |
parents | 66b0e2371912 92add02409c9 |
children | f1c12354c3f7 |
line wrap: on
line diff
--- a/src/share/vm/opto/memnode.cpp Thu Apr 28 14:00:13 2011 -0700 +++ b/src/share/vm/opto/memnode.cpp Fri Apr 29 11:15:30 2011 -0700 @@ -2155,9 +2155,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");