[cfe-users] -Wtautological-constant-out-of-range-compare false positive?

Fred fredm at spamcop.net
Fri Oct 25 21:46:04 PDT 2013

I have just started using the new Apple branch of clang[1] and encountered -Wtautological-constant-out-of-range-compare for the first time with the following code:
#include <stdio.h>

typedef enum o {
    O_1 = 0,
} o;

int main(int argc, char** argv) {
  enum o e1 = 2;

  if( e1 >= 2 ) {
    printf( "That's not right\n" );

  return 0;

$ clang -Wall 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.

I would have expected the e1 >= 2 expression to be fine as enums are treated as integers - just like the out of range allocation e1 = 2 did not prompt a warning.

Am I missing something here or is the warning throwing up a false positive?


$ 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

More information about the cfe-users mailing list