blob: a0c2a30055c8478f1dee7f9ff47de1c846d15254 [file] [log] [blame]
// RUN: %clang_cc1 -fsyntax-only -DTEST -verify %s
// RUN: %clang_cc1 -fsyntax-only -Wno-tautological-unsigned-enum-zero-compare -verify %s
int main() {
enum A { A_foo, A_bar };
enum A a;
#ifdef TEST
if (a < 0) // expected-warning {{comparison of unsigned enum expression < 0 is always false}}
return 0;
if (a >= 0) // expected-warning {{comparison of unsigned enum expression >= 0 is always true}}
return 0;
if (0 <= a) // expected-warning {{comparison of 0 <= unsigned enum expression is always true}}
return 0;
if (0 > a) // expected-warning {{comparison of 0 > unsigned enum expression is always false}}
return 0;
if (a < 0U) // expected-warning {{comparison of unsigned enum expression < 0 is always false}}
return 0;
if (a >= 0U) // expected-warning {{comparison of unsigned enum expression >= 0 is always true}}
return 0;
if (0U <= a) // expected-warning {{comparison of 0 <= unsigned enum expression is always true}}
return 0;
if (0U > a) // expected-warning {{comparison of 0 > unsigned enum expression is always false}}
return 0;
#else
// expected-no-diagnostics
if (a < 0)
return 0;
if (a >= 0)
return 0;
if (0 <= a)
return 0;
if (0 > a)
return 0;
if (a < 0U)
return 0;
if (a >= 0U)
return 0;
if (0U <= a)
return 0;
if (0U > a)
return 0;
#endif
return 1;
}