https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106868
--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> --- (In reply to Martin Sebor from comment #2) ... Actually, scratch that, sorry. Richard is right that the false positive is due to a bug in the warning code. The following patch resolves it: diff --git a/gcc/gimple-ssa-warn-access.cc b/gcc/gimple-ssa-warn-access.cc index 04aa849a4b1..79093b46906 100644 --- a/gcc/gimple-ssa-warn-access.cc +++ b/gcc/gimple-ssa-warn-access.cc @@ -4467,6 +4467,7 @@ pass_waccess::gimple_call_return_arg_ref (gcall *call) { access_ref aref; if (m_ptr_qry.get_ref (arg, call, &aref, 0) + && aref.deref < 0 && DECL_P (aref.ref)) return aref.ref; }