diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-02-23 13:58:53 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-02-23 13:58:53 +0100 |
commit | e67bf044ae4ad40fd0cc24f428ca9758cd920f97 (patch) | |
tree | a3bc76f90dc7fe653979363fdc0f18eeeb440730 /gcc/fold-const.c | |
parent | f1a62b6fa8c1e5305d887559575506755f8aab69 (diff) | |
download | gcc-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.c | 7 |
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) |