On 11/18/2015 09:26 PM, Jason Merrill wrote:
The rs6000 target was hitting a bootstrap failure due to -Werror=type-limits. Since warn_tautological_cmp and other warnings avoid warning if one of the operands comes from a macro, I thought it would make sense to do that here as well.
The also disables the warning for functions that are shadowed by macros such as C atomic_load et al. For example, in the program below. Is that an acceptable compromise or is there a way to avoid this? #include <stdatomic.h> unsigned foo (unsigned char *x) { if (atomic_load (x) > 1000) return 0; return 1; } At the same time, the change doesn't suppress the warning in other cases where I would have expected it to suppress it based on your description. For instance here: unsigned short bar (unsigned short x) { #define X x if (x > 0xffff) return 0; return 1; } I noticed there is code elsewhere in c-common.c that avoids issuing the same warning for system headers (that's the code that responsible for issuing the warning for the second test case above). There is also code in tree-vrp.c that issues it unconditionally regardless of macros or system headers. Martin