1 /* { dg-do compile } */ 2 /* { dg-options "-Wlogical-op -Wtype-limits" } */ 3 #include <limits.h> 4 long long emacs_lseek(long long offset)5emacs_lseek (long long offset) 6 { 7 return -1-9223372036854775807LL <= offset && offset <= 9223372036854775807LL; 8 } 9 10 long long foo(long long offset)11foo (long long offset) 12 { 13 return -1-9223372036854775807LL > offset && offset > 9223372036854775807LL; 14 } 15 16 long long foo3(long long offset)17foo3 (long long offset) 18 { 19 return -1-9223372036854775807LL > offset && offset < 9223372036854775807LL; 20 } 21 22 long long foo2(long long offset)23foo2 (long long offset) 24 { 25 if (-1-9223372036854775807LL <= offset) return 0; 26 if (offset <= 9223372036854775807LL) return 0; 27 if (-1-9223372036854775807LL > offset) return 0; 28 if (offset > 9223372036854775807LL) return 0; 29 return 1; 30 } 31 32 # define BOT INT_MIN 33 # define TOP INT_MAX 34 35 long long get_intmax(void); 36 int get_int(void); 37 extern void do_something(void); main(void)38int main(void) 39 { 40 int i = get_int(); 41 long long x = get_intmax(); 42 i = (i > BOT && i < TOP); //OK 43 i = (i >= BOT+1 && i <= TOP-1); //OK 44 i = (i >= BOT && i <= TOP); //Oops! 45 } 46