I believe this does also happen in ToT Clang & there's been some discussion (perhaps it's on an internal Google bug, I forget) about the right thing to do here.
I think one of the issues is that your code isn't guaranteed to behave that way - it's possible for an implementation to map -1 onto one of the existing 0/1 bit values of the enum (the enum only needs to be one bit wide (obviously sizeof won't reflect that, it still has to take at least a byte of storage)). Arguably, though, it's still possibel on some implementations (including Clang) for it to have such a value... The wording is tricky - between underlying types and ranges, etc, I don't have it all perfectly straight in my head. On Sat, Dec 14, 2013 at 3:17 AM, Fred <[email protected]> wrote: > Hi all, > I am seeing the -Wtautological-constant-out-of-range-compare warning for > the first time. > > With this Apple clang version: > $ clang --version > Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) > Target: x86_64-apple-darwin13.0.0 > Thread model: posix > > In this program: > #include <stdio.h> > > typedef enum o { > O_1 = 0, > O_2, > } o; > > int main(int argc, char** argv) { > enum o e1 = -1; > > if( e1 >= 2 ) { > printf( "That's not right\n" ); > } > > printf("e1:%d\n",e1); > > return 0; > } > > Compiled thus, I get the warning that my if test above will always > evaluate as false: > $ clang -Wall -std=c89 t1.c > t1.c:11:10: warning: comparison of constant 2 with expression of type > 'enum o' > is always false [-Wtautological-constant-out-of-range-compare] > if( e1 >= 2 ) { > ~~ ^ ~ > 1 warning generated. > > That is demonstrably untrue: > $ ./a.out > That's not right > e1:-1 > > Does this error also occur in the mainline clang? I am unsure whether to > raise the issue with Apple or the clang developers. > > Thanks, > Fred > _______________________________________________ > cfe-users mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users >
_______________________________________________ cfe-users mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-users
