PR c/4475, c++/3780:
authorJakub Jelinek <jakub@redhat.com>
Mon, 4 Feb 2002 22:05:15 +0000 (23:05 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 4 Feb 2002 22:05:15 +0000 (23:05 +0100)
commit6f9fdf4db2c68f482ec4ff3cadaea0537a4b13e1
treeabbbeb9e68d3bc70e43d55d15b23db2b78adbf38
parent79109502a02948f16653b44b434b8b4ef8aebd54
PR c/4475, c++/3780:

* c-common.def (SWITCH_STMT): Add SWITCH_TYPE operand.
* c-common.h (SWITCH_TYPE): Define.
* c-typeck.c (c_start_case): Set SWITCH_TYPE.
* stmt.c (all_cases_count): Set lastval to thisval at end of loop.
Rename spareness variable to sparseness.
(expand_end_case_type): Renamed from expand_end_case, use orig_type
if non-NULL instead of TREE_TYPE (orig_index).
* tree.h (expand_end_case_type): Renamed from expand_end_case.
(expand_end_case): Define using expand_end_case_type.
* c-semantics.c (genrtl_switch_stmt): Pass SWITCH_TYPE
to expand_end_case_type.
* doc/c-tree.texi (SWITCH_STMT): Document SWITCH_TYPE.

* semantics.c (begin_switch_stmt): Clear SWITCH_TYPE.
(finish_switch_cond): Set SWITCH_TYPE.

* gcc.dg/Wswitch.c: Fix typos.  Don't return unconditionally
before all tests.  Move warning one line above to match where it
C frontend emits.
* gcc.dg/Wswitch-2.c: New test.
* g++.dg/warn/Wswitch-1.C: New test.
* g++.dg/warn/Wswitch-2.C: New test.

From-SVN: r49497
15 files changed:
gcc/ChangeLog
gcc/c-common.def
gcc/c-common.h
gcc/c-semantics.c
gcc/c-typeck.c
gcc/cp/ChangeLog
gcc/cp/semantics.c
gcc/doc/c-tree.texi
gcc/stmt.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Wswitch-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/warn/Wswitch-2.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/Wswitch-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/Wswitch.c
gcc/tree.h