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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |egallager at gcc dot gnu.org

--- Comment #2 from Eric Gallager <egallager at gcc dot gnu.org> ---
I modified it slightly and got it it to warn:

$ cat 115684.c
#include <stdio.h>

int main(void) {
    enum { myEnumField0, myEnumField1 };
    int a = 0;
    int *b = &a;
    if (b == myEnumField0)
        return puts("hey");
    else if (b == myEnumField1)
        return puts("yeh");
    return a;
}
$ /usr/local/bin/gcc -c -g3 -O3 -Wall -Wextra -Wconversion -pedantic
-Wc++-compat -Wunused 115684.c
115684.c: In function 'main':
115684.c:9:16: warning: comparison between pointer and integer
    9 |     else if (b == myEnumField1)
      |                ^~
$

So, it depends on the value of the enumerator, it seems. Also it's a problem
that the existing warning doesn't seem to be linked to a flag; see bug 44209

Reply via email to