https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101358
Bug ID: 101358 Summary: Warn when saving a pointer to an object with temporary lifetime Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: josephcsible at gmail dot com Target Milestone: --- Consider this C code: typedef struct { int x[1]; } foo; foo f(void); int g(void) { int *p = f().x; return *p; } The g() function is always UB, since the return value of f() has temporary lifetime, so doing "return *p;" is dereferencing a pointer to an object whose lifetime has ended. (This is the case both before and after C11's change to temporary lifetime.) Since it's obvious at compile time that p can never be used safely, we should have a warning for it, similar to how we have -Wreturn-local-addr to catch mistakes like this function: int *h(void) { int x; return &x; }