PR c++/81067 - redundant NULL warning.
authorJason Merrill <jason@redhat.com>
Wed, 17 Jan 2018 17:44:42 +0000 (12:44 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 17 Jan 2018 17:44:42 +0000 (12:44 -0500)
* call.c (convert_like_real): Restore null_node handling.

From-SVN: r256803

gcc/cp/ChangeLog
gcc/cp/call.c

index ff09fe3..bdcac47 100644 (file)
@@ -1,5 +1,10 @@
 2018-01-17  Jason Merrill  <jason@redhat.com>
 
+       PR c++/81067 - redundant NULL warning.
+       * call.c (convert_like_real): Restore null_node handling.
+
+2018-01-17  Jason Merrill  <jason@redhat.com>
+
        PR c++/81843 - ICE with variadic member template.
        PR c++/72801
        * pt.c (unify_pack_expansion): Don't try to deduce enclosing
index f554285..1f326d5 100644 (file)
@@ -6804,6 +6804,12 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
 
       if (type_unknown_p (expr))
        expr = instantiate_type (totype, expr, complain);
+      if (expr == null_node
+         && INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (totype))
+       /* If __null has been converted to an integer type, we do not want to
+          continue to warn about uses of EXPR as an integer, rather than as a
+          pointer.  */
+       expr = build_int_cst (totype, 0);
       return expr;
     case ck_ambig:
       /* We leave bad_p off ck_ambig because overload resolution considers