mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-22 00:01:10 +08:00
re PR c++/69850 (unnecessary -Wnonnull-compare warning)
PR c++/69850 * gimplify.c (gimplify_cond_expr): Call gimple_set_no_warning on the cond_stmt from TREE_NO_WARNING on COND_EXPR_COND. * gimple-ssa-nonnull-compare.c (do_warn_nonnull_compare): Don't warn on gimple_no_warning_p statements. * init.c (build_delete): Set TREE_NO_WARNING on ifexp. * g++.dg/warn/Wnonnull-compare-1.C: New test. From-SVN: r233508
This commit is contained in:
parent
0f02dd56f5
commit
932c0da42d
@ -1,3 +1,11 @@
|
||||
2016-02-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/69850
|
||||
* gimplify.c (gimplify_cond_expr): Call gimple_set_no_warning
|
||||
on the cond_stmt from TREE_NO_WARNING on COND_EXPR_COND.
|
||||
* gimple-ssa-nonnull-compare.c (do_warn_nonnull_compare): Don't
|
||||
warn on gimple_no_warning_p statements.
|
||||
|
||||
2016-02-17 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* doc/extend.texi (C++ Attributes): Correct description of
|
||||
|
@ -1,3 +1,8 @@
|
||||
2016-02-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/69850
|
||||
* init.c (build_delete): Set TREE_NO_WARNING on ifexp.
|
||||
|
||||
2016-02-17 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/69842
|
||||
|
@ -4525,6 +4525,10 @@ build_delete (tree otype, tree addr, special_function_kind auto_delete,
|
||||
complain));
|
||||
if (ifexp == error_mark_node)
|
||||
return error_mark_node;
|
||||
/* This is a compiler generated comparison, don't emit
|
||||
e.g. -Wnonnull-compare warning for it. */
|
||||
else if (TREE_CODE (ifexp) == NE_EXPR)
|
||||
TREE_NO_WARNING (ifexp) = 1;
|
||||
}
|
||||
|
||||
if (ifexp != integer_one_node)
|
||||
|
@ -96,7 +96,8 @@ do_warn_nonnull_compare (function *fun, tree arg)
|
||||
}
|
||||
if (op
|
||||
&& (POINTER_TYPE_P (TREE_TYPE (arg))
|
||||
? integer_zerop (op) : integer_minus_onep (op)))
|
||||
? integer_zerop (op) : integer_minus_onep (op))
|
||||
&& !gimple_no_warning_p (stmt))
|
||||
warning_at (loc, OPT_Wnonnull_compare,
|
||||
"nonnull argument %qD compared to NULL", arg);
|
||||
}
|
||||
|
@ -3219,6 +3219,7 @@ gimplify_cond_expr (tree *expr_p, gimple_seq *pre_p, fallback_t fallback)
|
||||
&arm2);
|
||||
cond_stmt = gimple_build_cond (pred_code, arm1, arm2, label_true,
|
||||
label_false);
|
||||
gimple_set_no_warning (cond_stmt, TREE_NO_WARNING (COND_EXPR_COND (expr)));
|
||||
gimplify_seq_add_stmt (&seq, cond_stmt);
|
||||
gimple_stmt_iterator gsi = gsi_last (seq);
|
||||
maybe_fold_stmt (&gsi);
|
||||
|
@ -1,3 +1,8 @@
|
||||
2016-02-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/69850
|
||||
* g++.dg/warn/Wnonnull-compare-1.C: New test.
|
||||
|
||||
2012-02-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||
|
||||
* gcc.target/powerpc/vec-cg.c: New test.
|
||||
|
9
gcc/testsuite/g++.dg/warn/Wnonnull-compare-1.C
Normal file
9
gcc/testsuite/g++.dg/warn/Wnonnull-compare-1.C
Normal file
@ -0,0 +1,9 @@
|
||||
// PR c++/69850
|
||||
// { dg-do compile }
|
||||
// { dg-options "-Wall" }
|
||||
|
||||
struct C
|
||||
{
|
||||
~C () { delete this; } // { dg-bogus "nonnull argument" }
|
||||
};
|
||||
C c;
|
Loading…
x
Reference in New Issue
Block a user