$ cat enum-test.c
enum foo_enum { FOO };

int 
main (void)
{
  enum foo_enum foo;
  if (foo >= FOO)
    {
    }
}
$ gcc -Wextra enum-test.c
enum-test.c: In function 'main':
enum-test.c:7: warning: comparison of unsigned expression >= 0 is always true

I looked through existing bug reports but didn't find this.  If it's a dupe,
please let me know what I should have searched for.

Here is an old thread I found about a related test-case:

http://gcc.gnu.org/ml/gcc-patches/2000-07/msg00772.html

I'm not sure, but even if it's only C99 that says enums have to be ints, the
promotion shouldn't happen for C89 either.


-- 
           Summary: enum int type gets promoted to unsigned int in
                    comparison
           Product: gcc
           Version: 4.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: chris dot pickett at mail dot mcgill dot ca


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

Reply via email to