aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-09-06 22:07:13 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2005-09-06 22:07:13 +0200
commit0c9b182b9f454fb2d5f57b17d22e860490c3c68f (patch)
tree26cc76717919b282649ef97b4afa9424d824fe86 /gcc/tree-cfg.c
parent73109af7527b8c42510b1144cc2118a175960903 (diff)
downloadgcc-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/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index df97058..3711556 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -5125,7 +5125,8 @@ execute_warn_function_return (void)
{
tree last = last_stmt (e->src);
if (TREE_CODE (last) == RETURN_EXPR
- && TREE_OPERAND (last, 0) == NULL)
+ && TREE_OPERAND (last, 0) == NULL
+ && !TREE_NO_WARNING (last))
{
#ifdef USE_MAPPED_LOCATION
location = EXPR_LOCATION (last);