# HG changeset patch # User thartmann # Date 1480403775 -3600 # Node ID 771199a0134932b6ca0d7408115abc32125998e1 # Parent 14af457890427b326d4eaee62581fd5c80559d4a 8168996: C2 crash at postaloc.cpp:140 : assert(false) failed: unexpected yanked node Summary: Prevent MemBarAcquire from keeping a LoadNNode alive by adding it to the worklist if it is the only user of a DecodeNNode. Reviewed-by: kvn diff -r 14af45789042 -r 771199a01349 hotspot/src/share/vm/opto/node.cpp --- a/hotspot/src/share/vm/opto/node.cpp Sun Nov 27 19:58:30 2016 -0800 +++ b/hotspot/src/share/vm/opto/node.cpp Tue Nov 29 08:16:15 2016 +0100 @@ -1117,8 +1117,8 @@ if (this->is_Store()) { // Condition for back-to-back stores folding. return n->Opcode() == op && n->in(MemNode::Memory) == this; - } else if (this->is_Load()) { - // Condition for removing an unused LoadNode from the MemBarAcquire precedence input + } else if (this->is_Load() || this->is_DecodeN()) { + // Condition for removing an unused LoadNode or DecodeNNode from the MemBarAcquire precedence input return n->Opcode() == Op_MemBarAcquire; } else if (op == Op_AddL) { // Condition for convL2I(addL(x,y)) ==> addI(convL2I(x),convL2I(y))