aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2015-11-18 23:26:48 -0500
committerJason Merrill <jason@gcc.gnu.org>2015-11-18 23:26:48 -0500
commitd0eccfcdc30257a23ce82041a035626350fa421f (patch)
tree88e3a4c343c0451d6503bcf8bbc10d367c847071 /gcc
parent7d7e7aca3bcded9bccc3ebb4c020287ff21ef102 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/c-family/c-common.c4
-rw-r--r--gcc/testsuite/g++.dg/warn/Wtype-limits2.C11
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();
+}