https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89888

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Fri Apr 19 11:56:07 2019
New Revision: 270455

URL: https://gcc.gnu.org/viewcvs?rev=270455&root=gcc&view=rev
Log:
        PR c/89888
        * c-common.h (c_add_case_label): Remove orig_type and outside_range_p
        arguments.
        (c_do_switch_warnings): Remove outside_range_p argument.
        * c-common.c (check_case_bounds): Removed.
        (c_add_case_label): Remove orig_type and outside_range_p arguments.
        Don't call check_case_bounds.  Fold low_value as well as high_value.
        * c-warn.c (c_do_switch_warnings): Remove outside_range_p argument.
        Check for case labels outside of range of original type here and
        adjust them.
c/
        * c-typeck.c (struct c_switch): Remove outside_range_p member.
        (c_start_case): Don't clear it.
        (do_case): Adjust c_add_case_label caller.
        (c_finish_case): Adjust c_do_switch_warnings caller.
cp/
        * decl.c (struct cp_switch): Remove outside_range_p member.
        (push_switch): Don't clear it.
        (pop_switch): Adjust c_do_switch_warnings caller.
        (finish_case_label): Adjust c_add_case_label caller.
testsuite/
        * c-c++-common/pr89888.c: New test.
        * g++.dg/torture/pr40335.C: Change dg-bogus into dg-warning.
        Don't expect -Wswitch-unreachable warning.

Added:
    trunk/gcc/testsuite/c-c++-common/pr89888.c
Modified:
    trunk/gcc/c-family/ChangeLog
    trunk/gcc/c-family/c-common.c
    trunk/gcc/c-family/c-common.h
    trunk/gcc/c-family/c-warn.c
    trunk/gcc/c/ChangeLog
    trunk/gcc/c/c-typeck.c
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/decl.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/torture/pr40335.C

Reply via email to