Commit 315aa691 by Jakub Jelinek Committed by Jakub Jelinek

re PR c++/86569 (-Wnonnull-compare affects code generation since r233684)

	PR c++/86569
	* cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
	of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
	or warn_nonnull_compare.

	* g++.dg/warn/Wnonnull-compare-9.C: New test.

From-SVN: r262928
parent d9690d23
2018-07-23 Jakub Jelinek <jakub@redhat.com>
PR c++/86569
* cp-gimplify.c (cp_fold): Don't fold comparisons into other kind
of expressions other than INTEGER_CST regardless of TREE_NO_WARNING
or warn_nonnull_compare.
2018-07-19 Paolo Carlini <paolo.carlini@oracle.com>
Revert fix for c++/59480 (and testsuite followup)
......
......@@ -2381,21 +2381,26 @@ cp_fold (tree x)
else
x = fold (x);
if (TREE_NO_WARNING (org_x)
&& warn_nonnull_compare
&& COMPARISON_CLASS_P (org_x))
/* This is only needed for -Wnonnull-compare and only if
TREE_NO_WARNING (org_x), but to avoid that option affecting code
generation, we do it always. */
if (COMPARISON_CLASS_P (org_x))
{
if (x == error_mark_node || TREE_CODE (x) == INTEGER_CST)
;
else if (COMPARISON_CLASS_P (x))
TREE_NO_WARNING (x) = 1;
{
if (TREE_NO_WARNING (org_x) && warn_nonnull_compare)
TREE_NO_WARNING (x) = 1;
}
/* Otherwise give up on optimizing these, let GIMPLE folders
optimize those later on. */
else if (op0 != TREE_OPERAND (org_x, 0)
|| op1 != TREE_OPERAND (org_x, 1))
{
x = build2_loc (loc, code, TREE_TYPE (org_x), op0, op1);
TREE_NO_WARNING (x) = 1;
if (TREE_NO_WARNING (org_x) && warn_nonnull_compare)
TREE_NO_WARNING (x) = 1;
}
else
x = org_x;
......
2018-07-23 Jakub Jelinek <jakub@redhat.com>
PR c++/86569
* g++.dg/warn/Wnonnull-compare-9.C: New test.
2018-07-20 Martin Sebor <msebor@redhat.com>
PR middle-end/82063
......
// PR c++/86569
// { dg-do compile }
// { dg-options "-fcompare-debug=-Wnonnull-compare" }
bool b;
int
main ()
{
return ((!b) != 0);
}
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