class test { public: int secondMember; }; class test2 { public: int requiredForTest; int secondMember;
}; int & returnRefToLocalOK() { test local; return local.secondMember; } int & returnRefToLocalMissing() { test2 local; return local.secondMember; } int main() { return returnRefToLocalOK(); return returnRefToLocalMissing(); } =========== gcc fails to generate the warning "reference to local variable returned" for function returnRefToLocalMissing(). Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/specs Configured with: ../configure Thread model: posix gcc version 3.3.6 the command line and resulting output: gcc test.cc test.cc: In function `int& returnRefToLocalOK()': test.cc:16: warning: reference to local variable `local' returned the preprocessed file: # 1 "test.cc" # 1 "<built-in>" # 1 "<command line>" # 1 "test.cc" class test { public: int secondMember; }; class test2 { public: int requiredForTest; int secondMember; }; int & returnRefToLocalOK() { test local; return local.secondMember; } int & returnRefToLocalMissing() { test2 local; return local.secondMember; } int main() { return returnRefToLocalOK(); return returnRefToLocalMissing(); } Also occurs in gcc versions 3.3.3 through 3.3.5. -- Summary: Missing "warning: reference to local variable returned" Product: gcc Version: 3.3.6 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: carolh at sinavigator dot com GCC host triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26671