https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90905
Bug ID: 90905
Summary: missing -Wreturn-local-addr returning a local
std::string::c_str()
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
Compiling function f0 below on its own triggers a -Wreturn-local-addr for the
return statement as one would expect. But compiling the equivalent f1 fails to
trigger the same warning. Worse yet, compiling both functions in the samne
translatin unit suppresses the warning for f0.
#include <string>
#if F0
const char s[] = "abc";
const char* f0 ()
{
std::string str (s);
return str.c_str ();
}
#endif
#if F1
const char *p = "def";
const char* f1 ()
{
std::string str (p);
return str.c_str ();
}
#endif