8168996: C2 crash at postaloc.cpp:140 : assert(false) failed: unexpected yanked node
authorthartmann
Tue, 29 Nov 2016 08:16:15 +0100
changeset 42610 771199a01349
parent 42608 14af45789042
child 42611 0de1eb277c95
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
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))