--- a/src/hotspot/share/opto/loopopts.cpp Tue Feb 13 16:13:20 2018 +0100
+++ b/src/hotspot/share/opto/loopopts.cpp Tue Feb 13 16:57:01 2018 +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);