https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80835
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- You've reported this against libstdc++ but there's no way the library code can possibly transform p->load(std::memory_order_acquire).ptr into loading a subobject. std::atomic::load has no idea what you plan to do with the returned value.