--- old/src/hotspot/share/opto/loopopts.cpp 2018-02-12 14:30:49.421221713 +0100 +++ new/src/hotspot/share/opto/loopopts.cpp 2018-02-12 14:30:48.497219613 +0100 @@ -693,7 +693,9 @@ Node* PhaseIdealLoop::try_move_store_before_loop(Node* n, Node *n_ctrl) { // Store has to be first in the loop body IdealLoopTree *n_loop = get_loop(n_ctrl); - if (n->is_Store() && n_loop != _ltree_root && n_loop->is_loop() && n->in(0) != NULL) { + if (n->is_Store() && n_loop != _ltree_root && + n_loop->is_loop() && n_loop->_head->is_Loop() && + n->in(0) != NULL) { Node* address = n->in(MemNode::Address); Node* value = n->in(MemNode::ValueIn); Node* mem = n->in(MemNode::Memory);