* gimplify.c (gimplify_modify_expr): Call gimple_set_no_warning
on assign if (*from_p) is a comparison, set it to
TREE_NO_WARNING (*from_p).
* c-c++-common/nonnull-1.c (func): Remove parens around cp4 != 0.
(func2): New function for cond with parens, xfail warning for c++.
* g++.dg/warn/Wnonnull-compare-8.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234392
138bc75d-0d04-0410-961f-
82ee72b054a4
+2016-03-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/70295
+ * gimplify.c (gimplify_modify_expr): Call gimple_set_no_warning
+ on assign if (*from_p) is a comparison, set it to
+ TREE_NO_WARNING (*from_p).
+
2016-03-21 Jakub Jelinek <jakub@redhat.com>
PR middle-end/70326
{
assign = gimple_build_assign (*to_p, *from_p);
gimple_set_location (assign, EXPR_LOCATION (*expr_p));
+ if (COMPARISON_CLASS_P (*from_p))
+ gimple_set_no_warning (assign, TREE_NO_WARNING (*from_p));
}
if (gimplify_ctxp->into_ssa && is_gimple_reg (*to_p))
+2016-03-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/70295
+ * c-c++-common/nonnull-1.c (func): Remove parens around cp4 != 0.
+ (func2): New function for cond with parens, xfail warning for c++.
+ * g++.dg/warn/Wnonnull-compare-8.C: New test.
+
2016-03-22 Patrick Palka <ppalka@gcc.gnu.org>
PR c++/70096
if (NULL != cp3) /* { dg-warning "nonnull argument" "cp3 compared to NULL" } */
return 3;
- return (cp4 != 0) ? 0 : 1; /* { dg-warning "nonnull argument" "cp4 compared to NULL" } */
+ return cp4 != 0 ? 0 : 1; /* { dg-warning "nonnull argument" "cp4 compared to NULL" } */
+}
+
+__attribute__((nonnull (1))) int
+func2 (char *cp)
+{
+ return (cp != NULL) ? 1 : 0; /* { dg-warning "nonnull argument" "cp compared to NULL" { xfail c++ } } */
}
--- /dev/null
+// PR c++/70295
+// { dg-do compile }
+// { dg-options "-O2 -Wnonnull-compare" }
+
+struct A { A (); virtual ~A (); bool foo (bool); };
+struct B : virtual public A { B (); virtual ~B (); };
+
+bool
+A::foo (bool x)
+{
+ if (x && dynamic_cast<B *>(this) != (B *) 0) // { dg-bogus "nonnull argument" }
+ return true;
+ return false;
+}