On 4/14/23 21:22, Jeff Law wrote:
On 4/14/23 17:42, Jason Merrill via Gcc-patches wrote:
Tested x86_64-pc-linux-gnu, ok for trunk?
-- 8< --
Here we hit the MEM_REF case, with its arg an ADDR_EXPR, but had no
handling
for that and wrongly assumed it would be a reference to a local variable.
This patch overhauls the logic for deciding whether the target is
something
to warn about so that we only warn if we specifically recognize the
target
as non-local. None of the existing tests regress as a result.
PR c++/109514
gcc/ChangeLog:
* gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
Overhaul lhs_ref.ref analysis.
gcc/testsuite/ChangeLog:
* g++.dg/warn/Wdangling-pointer-6.C: New test.
One might ask if we have a (MEM_REF (ADDR_REF ...)) why we didn't
simplify that by removing the MEM_REF and ADDR_REF wrappers.
FYI in this case the type of the MEM_REF is the type of a member of a
member of a member of the variable.
But on
the assumption there's a good reason to have such nodes, OK for the trunk.
jeff