diff options
author | Jason Merrill <jason@redhat.com> | 2015-11-18 23:26:48 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2015-11-18 23:26:48 -0500 |
commit | d0eccfcdc30257a23ce82041a035626350fa421f (patch) | |
tree | 88e3a4c343c0451d6503bcf8bbc10d367c847071 /gcc | |
parent | 7d7e7aca3bcded9bccc3ebb4c020287ff21ef102 (diff) | |
download | gcc-d0eccfcdc30257a23ce82041a035626350fa421f.zip gcc-d0eccfcdc30257a23ce82041a035626350fa421f.tar.gz gcc-d0eccfcdc30257a23ce82041a035626350fa421f.tar.bz2 |
c-common.c (shorten_compare): Don't -Wtype-limits if the non-constant operand comes from a macro.
* c-common.c (shorten_compare): Don't -Wtype-limits if the
non-constant operand comes from a macro.
From-SVN: r230589
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-family/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wtype-limits2.C | 11 |
3 files changed, 19 insertions, 1 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 9ba2ea0..5ca75b4 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,8 @@ +2015-11-18 Jason Merrill <jason@redhat.com> + + * c-common.c (shorten_compare): Don't -Wtype-limits if the + non-constant operand comes from a macro. + 2015-11-17 Jason Merrill <jason@redhat.com> PR bootstrap/68346 diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index f50ca48..068a0bc 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -4650,7 +4650,9 @@ shorten_compare (location_t loc, tree *op0_ptr, tree *op1_ptr, type = c_common_unsigned_type (type); } - if (TREE_CODE (primop0) != INTEGER_CST) + if (TREE_CODE (primop0) != INTEGER_CST + /* Don't warn if it's from a macro. */ + && !from_macro_expansion_at (EXPR_LOCATION (primop0))) { if (val == truthvalue_false_node) warning_at (loc, OPT_Wtype_limits, diff --git a/gcc/testsuite/g++.dg/warn/Wtype-limits2.C b/gcc/testsuite/g++.dg/warn/Wtype-limits2.C new file mode 100644 index 0000000..a46baad --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wtype-limits2.C @@ -0,0 +1,11 @@ +// { dg-options -Wtype-limits } + +unsigned char array[4]; +bool b; +#define VAL (b ? array[0] : (unsigned char)0) + +int main() +{ + if (VAL > 1000) + __builtin_abort(); +} |