Commit 932c0da4 by Jakub Jelinek Committed by Jakub Jelinek

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
parent 0f02dd56
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
......
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);
......
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.
......
// PR c++/69850
// { dg-do compile }
// { dg-options "-Wall" }
struct C
{
~C () { delete this; } // { dg-bogus "nonnull argument" }
};
C c;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment