diff options
author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-29 23:21:35 +0000 |
---|---|---|
committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-29 23:21:35 +0000 |
commit | 8b447d3f4f8509f90a13d4aa2fd435b84ff517f4 (patch) | |
tree | cc94a67e7b17460335b8b668eac1f55a166543ed /gcc/cp | |
parent | d75cece1a80023500084e21c3dc9209d6891fb60 (diff) | |
download | ppe42-gcc-8b447d3f4f8509f90a13d4aa2fd435b84ff517f4.tar.gz ppe42-gcc-8b447d3f4f8509f90a13d4aa2fd435b84ff517f4.zip |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192968 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 86050dafde3..1eb1fe4f2c1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2012-10-29 Jonathan Wakely <jwakely.gcc@gmail.com> + + PR c++/54930 + * typeck.c (maybe_warn_about_returning_address_of_local): Use + OPT_Wreturn_local_addr. + 2012-10-26 Jakub Jelinek <jakub@redhat.com> PR c++/55081 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 2514b6fc741..5d8c27d534c 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -8020,14 +8020,14 @@ maybe_warn_about_returning_address_of_local (tree retval) if (TREE_CODE (whats_returned) == AGGR_INIT_EXPR || TREE_CODE (whats_returned) == TARGET_EXPR) { - warning (0, "returning reference to temporary"); + warning (OPT_Wreturn_local_addr, "returning reference to temporary"); return; } if (TREE_CODE (whats_returned) == VAR_DECL && DECL_NAME (whats_returned) && TEMP_NAME_P (DECL_NAME (whats_returned))) { - warning (0, "reference to non-lvalue returned"); + warning (OPT_Wreturn_local_addr, "reference to non-lvalue returned"); return; } } @@ -8043,10 +8043,10 @@ maybe_warn_about_returning_address_of_local (tree retval) || TREE_PUBLIC (whats_returned))) { if (TREE_CODE (valtype) == REFERENCE_TYPE) - warning (0, "reference to local variable %q+D returned", + warning (OPT_Wreturn_local_addr, "reference to local variable %q+D returned", whats_returned); else - warning (0, "address of local variable %q+D returned", + warning (OPT_Wreturn_local_addr, "address of local variable %q+D returned", whats_returned); return; } |