diff --git a/.hgtags b/.hgtags index 5100fad9753..02670041c21 100644 --- a/.hgtags +++ b/.hgtags @@ -469,3 +469,4 @@ e569e83139fdfbecfeb3cd9014d560917787f158 jdk-10+38 4b62b815b4f49970b91a952929cf50115c263cb3 jdk-10+42 107413b070b92c88bde6230ceb4a19b579781068 jdk-10+43 663f20fc51091bd7f95d18448850ba091207b7bd jdk-10+44 +4f96cf952e71cb8a127334494faf28880c26181b jdk-10+45 diff --git a/src/hotspot/share/opto/library_call.cpp b/src/hotspot/share/opto/library_call.cpp index f7bb9341adf..c94d23c0215 100644 --- a/src/hotspot/share/opto/library_call.cpp +++ b/src/hotspot/share/opto/library_call.cpp @@ -2578,7 +2578,8 @@ bool LibraryCallKit::inline_unsafe_access(bool is_store, const BasicType type, c // the one that guards them: pin the Load node LoadNode::ControlDependency dep = LoadNode::Pinned; Node* ctrl = control(); - if (adr_type->isa_instptr()) { + // non volatile loads may be able to float + if (!need_mem_bar && adr_type->isa_instptr()) { assert(adr_type->meet(TypePtr::NULL_PTR) != adr_type->remove_speculative(), "should be not null"); intptr_t offset = Type::OffsetBot; AddPNode::Ideal_base_and_offset(adr, &_gvn, offset);