commit 7489a9400cffa4c1010debaf2d86dcd286ce1cfd Author: Jason Merrill Date: Tue Nov 17 12:56:00 2015 -0500 PR bootstrap/68346 * c-common.c (warn_tautological_cmp): Fold before checking for constants. diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 06d857c..f50ca48 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -1924,7 +1924,7 @@ warn_tautological_cmp (location_t loc, enum tree_code code, tree lhs, tree rhs) /* We do not warn for constants because they are typical of macro expansions that test for features, sizeof, and similar. */ - if (CONSTANT_CLASS_P (lhs) || CONSTANT_CLASS_P (rhs)) + if (CONSTANT_CLASS_P (fold (lhs)) || CONSTANT_CLASS_P (fold (rhs))) return; /* Don't warn for e.g. diff --git a/gcc/testsuite/g++.dg/warn/Wtautological-compare2.C b/gcc/testsuite/g++.dg/warn/Wtautological-compare2.C new file mode 100644 index 0000000..9d9060d --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wtautological-compare2.C @@ -0,0 +1,11 @@ +// PR bootstrap/68346 +// { dg-options -Wtautological-compare } + +#define INVALID_REGNUM (~(unsigned int) 0) +#define PIC_OFFSET_TABLE_REGNUM INVALID_REGNUM + +int main() +{ + if ((unsigned) PIC_OFFSET_TABLE_REGNUM != INVALID_REGNUM) + __builtin_abort(); +}