https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104092
Bug ID: 104092 Summary: [12 Regression] Invalid -Wdangling-pointer warning after writes by calls Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: rsandifo at gcc dot gnu.org Target Milestone: --- Compiling the following testcase with -march=armv8.2-a+sve -O2 -Wall: -------------------------------------------------------------------- #include <arm_sve.h> svuint64_t bar(svbool_t pg, const uint64_t *addr) { return svget2(svld2_u64(pg, addr), 0); } -------------------------------------------------------------------- triggers: foo.c:4:16: warning: using a dangling pointer to an unnamed temporary [-Wdangling-pointer=] 4 | return svget2(svld2_u64(pg, addr), 0); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ foo.c:4:16: note: unnamed temporary defined here 4 | return svget2(svld2_u64(pg, addr), 0); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ This is because the code looks only at gassigns when tracking whether a clobber has been overwritten, so it misses assignments by calls. This seems to be different from PR104076.