diff options
author | Jakub Jelinek <jakub@redhat.com> | 2005-09-06 22:07:13 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2005-09-06 22:07:13 +0200 |
commit | 0c9b182b9f454fb2d5f57b17d22e860490c3c68f (patch) | |
tree | 26cc76717919b282649ef97b4afa9424d824fe86 /gcc/cp/semantics.c | |
parent | 73109af7527b8c42510b1144cc2118a175960903 (diff) | |
download | gcc-0c9b182b9f454fb2d5f57b17d22e860490c3c68f.zip gcc-0c9b182b9f454fb2d5f57b17d22e860490c3c68f.tar.gz gcc-0c9b182b9f454fb2d5f57b17d22e860490c3c68f.tar.bz2 |
re PR c/23075 (Redundant / bogus warning)
PR c/23075
* c-typeck.c (c_finish_return): Set TREE_NO_WARNING on RETURN_EXPR
if "return with no value, in function returning non-void" warning
has been issued.
* tree-cfg.c (execute_warn_function_return): Don't look at
RETURN_EXPRs with TREE_NO_WARNING set.
* typeck.c (check_return_expr): Add no_warning argument. Set
*no_warning to true if "return-statement with no value, in function
returning" warning has been issued.
* cp-tree.h (check_return_expr): Adjust prototype.
* semantics.c (finish_return_stmt): Set TREE_NO_WARNING if
check_return_expr set *no_warning to true.
* gcc.dg/pr23075.c: New test.
* g++.dg/warn/pr23075.C: New test.
From-SVN: r103967
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r-- | gcc/cp/semantics.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 074a7fd..c7fd1bb 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -743,8 +743,9 @@ tree finish_return_stmt (tree expr) { tree r; + bool no_warning; - expr = check_return_expr (expr); + expr = check_return_expr (expr, &no_warning); if (!processing_template_decl) { if (DECL_DESTRUCTOR_P (current_function_decl) @@ -760,6 +761,7 @@ finish_return_stmt (tree expr) } r = build_stmt (RETURN_EXPR, expr); + TREE_NO_WARNING (r) |= no_warning; r = maybe_cleanup_point_expr_void (r); r = add_stmt (r); finish_stmt (); |