| /* PR c++/66555 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-Wtautological-compare" } */ |
| |
| #define X 5 |
| #define Y 5 |
| #define A a |
| enum { U }; |
| |
| void |
| fn1 (int a, int *p) |
| { |
| if (a > a); /* { dg-warning "self-comparison always evaluates to false" } */ |
| if (a < a); /* { dg-warning "self-comparison always evaluates to false" } */ |
| if (a >= a); /* { dg-warning "self-comparison always evaluates to true" } */ |
| if (a <= a); /* { dg-warning "self-comparison always evaluates to true" } */ |
| if (a == a); /* { dg-warning "self-comparison always evaluates to true" } */ |
| if (a != a); /* { dg-warning "self-comparison always evaluates to false" } */ |
| if (A == A); /* { dg-warning "self-comparison always evaluates to true" } */ |
| if ((unsigned) a != (unsigned) a); |
| if ((a + 1) <= (a + 1)); /* { dg-warning "self-comparison always evaluates to true" } */ |
| if (1 ? a == a : 0); /* { dg-warning "self-comparison always evaluates to true" } */ |
| if (fn1 == fn1); /* { dg-warning "self-comparison always evaluates to true" } */ |
| if (*p == *p); /* { dg-warning "self-comparison always evaluates to true" } */ |
| |
| volatile int v = 5; |
| if (v == v); |
| if (v != v); |
| } |
| |
| void |
| fn2 (int a) |
| { |
| if (sizeof (int) >= 4); |
| if (sizeof (char) != 1); |
| if (sizeof (long) != sizeof (long long)); |
| if (0 < sizeof (short)); |
| if (5 != 5); |
| if (X > 5); |
| if (X == X); |
| if (3 + 4 == 6 + 1); |
| if ((unsigned) a != (unsigned long) a); |
| if (U == U); |
| if (U > 0); |
| } |
| |
| void |
| fn3 (int i, int j) |
| { |
| static int a[16]; |
| static int b[8][8]; |
| |
| if (a[5] == a[5]); |
| if (a[X] != a[Y]); |
| if (a[X] != a[X]); |
| if (a[i] == a[i]); /* { dg-warning "self-comparison always evaluates to true" } */ |
| if (b[5][5] == b[5][5]); |
| if (b[X][Y] >= b[Y][X]); |
| if (b[X][X] == b[Y][Y]); |
| if (b[i][j] != b[i][j]); /* { dg-warning "self-comparison always evaluates to false" } */ |
| if (b[i][Y] < b[i][X]); |
| if (b[X][j] < b[X][j]); |
| if ((a[i] + 4) == (4 + a[i])); /* { dg-warning "self-comparison always evaluates to true" } */ |
| } |
| |
| int |
| fn4 (int x, int y) |
| { |
| return x > x ? 1 : 0; /* { dg-warning "self-comparison always evaluates to false" } */ |
| } |