+2015-11-19 Jason Merrill <jason@redhat.com>
+
+ * c-common.c (shorten_compare): But look through macros from
+ system headers.
+
2015-11-18 Jason Merrill <jason@redhat.com>
* c-common.c (shorten_compare): Don't -Wtype-limits if the
}
if (TREE_CODE (primop0) != INTEGER_CST
- /* Don't warn if it's from a macro. */
- && !from_macro_expansion_at (EXPR_LOCATION (primop0)))
+ /* Don't warn if it's from a (non-system) macro. */
+ && !(from_macro_expansion_at
+ (expansion_point_location_if_in_system_header
+ (EXPR_LOCATION (primop0)))))
{
if (val == truthvalue_false_node)
warning_at (loc, OPT_Wtype_limits,
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-Wtype-limits" } */
+/* { dg-require-effective-target sync_char_short } */
+
+#include <stdatomic.h>
+
+unsigned foo (unsigned char *x)
+{
+ if (atomic_load (x) > 1000) /* { dg-warning "comparison is always false due to limited range of data type" } */
+ return 0;
+ return 1;
+}