aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-02-23 13:58:53 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2016-02-23 13:58:53 +0100
commite67bf044ae4ad40fd0cc24f428ca9758cd920f97 (patch)
treea3bc76f90dc7fe653979363fdc0f18eeeb440730 /gcc/fold-const.c
parentf1a62b6fa8c1e5305d887559575506755f8aab69 (diff)
downloadgcc-e67bf044ae4ad40fd0cc24f428ca9758cd920f97.zip
gcc-e67bf044ae4ad40fd0cc24f428ca9758cd920f97.tar.gz
gcc-e67bf044ae4ad40fd0cc24f428ca9758cd920f97.tar.bz2
re PR c++/69902 (Bogus -Wnonnull-compare for: dynamic_cast<T*>(&ref) == nullptr)
PR c++/69902 * fold-const.c (fold_truth_not_expr): Propagate TREE_NO_WARNING when inverting comparison. * g++.dg/warn/Wnonnull-compare-5.C: New test. From-SVN: r233631
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r--gcc/fold-const.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 41c652e..5376d4d 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -3589,8 +3589,11 @@ fold_truth_not_expr (location_t loc, tree arg)
if (code == ERROR_MARK)
return NULL_TREE;
- return build2_loc (loc, code, type, TREE_OPERAND (arg, 0),
- TREE_OPERAND (arg, 1));
+ tree ret = build2_loc (loc, code, type, TREE_OPERAND (arg, 0),
+ TREE_OPERAND (arg, 1));
+ if (TREE_NO_WARNING (arg))
+ TREE_NO_WARNING (ret) = 1;
+ return ret;
}
switch (code)