The various warnings issued by maybe_warn_about_returning_address_of_local() are enabled by default, so there is no way to make them (and only them) into errors. If they were controlled by a switch such as -Wreturn-local-addr (enabled by default) then they could be promoted to an error with -Werror=return-local-addr (or disabled with -Wno-return-local-addr for the foolish.)
Created attachment 28448 [details] add -Wreturn-local-addr switch This bootstraps, I'll regtest it tonight
Great. Remember the docs.
Yep, and tests :)
patch posted for review http://gcc.gnu.org/ml/gcc-patches/2012-10/msg01737.html
Author: redi Date: Mon Oct 29 23:21:35 2012 New Revision: 192968 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=192968 Log: gcc/c-family: PR c++/54930 * c.opt (Wreturn_local_addr): Define new option. gcc/c: PR c++/54930 * c-typeck.c (c_finish_return): Use OPT_Wreturn_local_addr. gcc/cp: PR c++/54930 * typeck.c (maybe_warn_about_returning_address_of_local): Use OPT_Wreturn_local_addr. gcc: PR c++/54930 * doc/invoke.texi (Warning Options): Document -Wno-return-local-addr. gcc/testsuite: PR c++/54930 * gcc.dg/Wreturn-local-addr.c: New. * g++.dg/warn/Wno-return-local-addr.C: New. * g++.dg/warn/Wreturn-local-addr.C: New. Added: trunk/gcc/testsuite/g++.dg/warn/Wno-return-local-addr.C trunk/gcc/testsuite/g++.dg/warn/Wreturn-local-addr.C trunk/gcc/testsuite/gcc.dg/Wreturn-local-addr.c Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c.opt trunk/gcc/c/ChangeLog trunk/gcc/c/c-typeck.c trunk/gcc/cp/ChangeLog trunk/gcc/cp/typeck.c trunk/gcc/doc/invoke.texi trunk/gcc/testsuite/ChangeLog
fixed for 4.8.0