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

Eric Gallager <egallager at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |DUPLICATE
             Status|NEW                         |RESOLVED

--- Comment #5 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to Ævar Arnfjörð Bjarmason from comment #4)
> (In reply to Eric Gallager from comment #3)
> > Is the expectation that this would come from -Wswitch, -Wswitch-enum,
> > -Wenum-compare, -Wenum-conversion, or some new flag?
> 
> I think a new flag would be best. The clang compiler has a C++-only
> -Wenum-compare-switch flag which will warn about this.
> 
> Here's a better and updated testcase showing how it works:
> 
> ```
> #include <stdio.h>
> 
> enum enum_x { A, B };
> enum enum_y { C, D };
> 
> int main(void)
> {   
>     enum enum_y y = C;
>     switch (y) {
>       case A: /* Should warn: switch() on C instead of A */
>         puts("A");
>         break;
>       case D:
>         puts("B");
>         break;
>     }
> }
> ```
> 
> And a one-liner showing how gcc, g++, clang and clang++ handle it:
> 
> ```
> $ for cc in gcc g++ clang clang++; do echo $cc: && $cc -Wswitch
> -Wswitch-enum -Wenum-compare -o test test.c; ./test; done
> gcc:
> A
> g++:
> A
> clang:
> A
> clang++:
> clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior
> is deprecated [-Wdeprecated]
> test.c:10:12: warning: comparison of different enumeration types in switch
> statement ('enum enum_y' and 'enum_x') [-Wenum-compare-switch]
>       case A: /* Should warn: switch() on C instead of A */
>            ^
> 1 warning generated.
> A
> ```
> 
> (This is with a local GCC 10.* and LLVM 13.*, on a Debian box).
> Documentation for the Clang warning:
> https://clang.llvm.org/docs/DiagnosticsReference.html#wenum-compare-switch

ok so in that case, this is bug 87404

*** This bug has been marked as a duplicate of bug 87404 ***

Reply via email to