]> gcc.gnu.org Git - gcc.git/commit
re PR c/66322 (Linus Torvalds: -Wswitch-bool produces dubious warnings, fails to...
authorMarek Polacek <polacek@redhat.com>
Mon, 29 Jun 2015 13:12:44 +0000 (13:12 +0000)
committerMarek Polacek <mpolacek@gcc.gnu.org>
Mon, 29 Jun 2015 13:12:44 +0000 (13:12 +0000)
commitb155cfd9288996f3a1044fb2463c7ac7e757a0df
tree8bc44969367937690b20314e2432d485c707678f
parent99e943a2be4bb7ec0d51b5a68e44d0d42dd9347a
re PR c/66322 (Linus Torvalds: -Wswitch-bool produces dubious warnings, fails to notice really bad things)

PR c/66322
* c-common.c (check_case_bounds): Add bool * parameter.  Set
OUTSIDE_RANGE_P.
(c_add_case_label): Add bool * parameter.  Pass it down to
check_case_bounds.
(c_do_switch_warnings): Add bool parameters.  Implement -Wswitch-bool
warning here.
* c-common.h (c_add_case_label, c_do_switch_warnings): Update
declarations.

* c-typeck.c (struct c_switch): Add BOOL_COND_P and OUTSIDE_RANGE_P.
(c_start_case): Set BOOL_COND_P and OUTSIDE_RANGE_P.  Don't warn
about -Wswitch-bool here.
(do_case): Update c_add_case_label call.
(c_finish_case): Update c_do_switch_warnings call.

* decl.c (struct cp_switch): Add OUTSIDE_RANGE_P.
(push_switch): Set OUTSIDE_RANGE_P.
(pop_switch): Update c_do_switch_warnings call.
(finish_case_label): Update c_add_case_label call.
* semantics.c (finish_switch_cond): Don't warn about -Wswitch-bool
here.

* function.c (stack_protect_epilogue): Remove a cast to int.
* doc/invoke.texi: Update -Wswitch-bool description.

* c-c++-common/pr60439.c: Add dg-prune-output and add switch cases.
* c-c++-common/pr66322.c: New test.
* g++.dg/eh/scope1.C: Remove dg-warning.

From-SVN: r225116
15 files changed:
gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/c-family/c-common.h
gcc/c/ChangeLog
gcc/c/c-typeck.c
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/semantics.c
gcc/doc/invoke.texi
gcc/function.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/pr60439.c
gcc/testsuite/c-c++-common/pr66322.c [new file with mode: 0644]
gcc/testsuite/g++.dg/eh/scope1.C
This page took 0.061903 seconds and 5 git commands to generate.