--- a/src/hotspot/share/opto/superword.cpp Sat Jul 27 10:02:35 2019 +0800
+++ b/src/hotspot/share/opto/superword.cpp Mon Jul 29 13:57:54 2019 +0200
@@ -3296,7 +3296,14 @@
Node* n = p->at(i);
assert(n->is_Load(), "only meaningful for loads");
if (!n->depends_only_on_test()) {
- dep = LoadNode::Pinned;
+ if (n->as_Load()->has_unknown_control_dependency() &&
+ dep != LoadNode::Pinned) {
+ // Upgrade to unknown control...
+ dep = LoadNode::UnknownControl;
+ } else {
+ // Otherwise, we must pin it.
+ dep = LoadNode::Pinned;
+ }
}
}
return dep;