Mercurial > hg > truffle
diff src/share/vm/opto/memnode.cpp @ 3252:92add02409c9
Merge
author | jmasa |
---|---|
date | Fri, 08 Apr 2011 14:19:50 -0700 |
parents | cb162b348743 e6beb62de02d |
children | 286c498ae0d4 |
line wrap: on
line diff
--- a/src/share/vm/opto/memnode.cpp Wed Apr 06 16:02:53 2011 -0700 +++ b/src/share/vm/opto/memnode.cpp Fri Apr 08 14:19:50 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");