https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104475
--- Comment #23 from Richard Biener <rguenth at gcc dot gnu.org> --- Interestingly doing void QFutureInterfaceBase::setThrottled(bool enable) { if (&d->m_mutex == nullptr) __builtin_unreachable (); QMutexLocker lock(&d->m_mutex); will avoid the diagnostic but instead complains qfutureinterface.cpp:67:21:warning: the address of 'QFutureInterfaceBasePrivate::m_mutex' will never be NULL [-Waddress] (that's without the re-ordering). So the C++ frontend already knows this but doesn't transfer it to the middle-end. Maybe we want something like ADDR_EXPR_NONZERO on the built ADDR_EXPR?