diff options
author | Jason Merrill <jason@redhat.com> | 2015-11-20 10:51:35 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2015-11-20 10:51:35 -0500 |
commit | 269adb9dea5b2ded168fb9ca12bd29c4e217d241 (patch) | |
tree | 9a5ca109c0eccf8777190899db2f34866efb7366 /gcc | |
parent | 8e92560a9c9c57dfed3283c48ef5e46a7e0204b1 (diff) | |
download | gcc-269adb9dea5b2ded168fb9ca12bd29c4e217d241.zip gcc-269adb9dea5b2ded168fb9ca12bd29c4e217d241.tar.gz gcc-269adb9dea5b2ded168fb9ca12bd29c4e217d241.tar.bz2 |
c-common.c (shorten_compare): But look through macros from system headers.
* c-common.c (shorten_compare): But look through macros from
system headers.
From-SVN: r230665
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/Wtype-limits2.c | 12 |
3 files changed, 21 insertions, 2 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 5ca75b4..c19cafa 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +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 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 068a0bc..fe0a235 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -4651,8 +4651,10 @@ shorten_compare (location_t loc, tree *op0_ptr, tree *op1_ptr, } 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, diff --git a/gcc/testsuite/gcc.dg/Wtype-limits2.c b/gcc/testsuite/gcc.dg/Wtype-limits2.c new file mode 100644 index 0000000..92151aa --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wtype-limits2.c @@ -0,0 +1,12 @@ +/* { 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; +} |