8168996: C2 crash at postaloc.cpp:140 : assert(false) failed: unexpected yanked node

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
This commit is contained in:
Tobias Hartmann 2016-11-29 08:16:15 +01:00
parent 7624f76c84
commit 5e29b0af21

View File

@ -1117,8 +1117,8 @@ bool Node::has_special_unique_user() const {
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))