void foo(bool b)
{
    switch ((unsigned int)b) {
        case 1:
        case 2: ;
    }
}

% g++ test.cc
test.cc: In function ‘void foo(bool)’:
test.cc:6: error: duplicate case value
test.cc:5: error: previously used here

The bug only appears with casts to (unsigned int) or wider; casts to (int),
(unsigned short), etc., work as expected.

Reproduces with GCC versions 4.2.4 and 4.3.2.


-- 
           Summary: Incorrectly rejects switch((unsigned int)boolvar)
           Product: gcc
           Version: 4.3.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: foo at mailinator dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39371

Reply via email to