diff --git a/oneflow/core/common/cached_object_msg_allocator.h b/oneflow/core/common/cached_object_msg_allocator.h index 150674dad9c4a8303b740e24500f4a80d7cd65e4..af444f35a684452b1934440205048a92c3fadbeb 100644 --- a/oneflow/core/common/cached_object_msg_allocator.h +++ b/oneflow/core/common/cached_object_msg_allocator.h @@ -34,7 +34,7 @@ struct ObjMsgMemBlock final { template<typename Enabled = void> static constexpr int MemPtrOffset() { - return (int)(long long)&((ObjMsgMemBlock*)nullptr)->mem_ptr_[0]; + return offsetof(ObjMsgMemBlock, mem_ptr_); } ObjMsgChunk* chunk_; diff --git a/oneflow/core/common/shared_or_plain.h b/oneflow/core/common/shared_or_plain.h index a326582368bef9cfb62ef8816049aa10b236aa6d..b76c8654aaee25875940f3988c31653000d70bdc 100644 --- a/oneflow/core/common/shared_or_plain.h +++ b/oneflow/core/common/shared_or_plain.h @@ -57,6 +57,7 @@ class SharedOrPlain final { template<typename S, typename P> SharedOrPlain<S, P>::SharedOrPlain(const SharedOrPlain& rhs) { if (rhs.IsPlain()) { +#pragma GCC diagnostic ignored "-Wclass-memaccess" std::memcpy(this, &rhs, sizeof(*this)); } else { shared_ptr_ = rhs.shared_ptr_;