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 ff09fe32fdb53605f934c42b9cf86140f2b47dee..bdcac47638596eccc2a7d025a785199e8244c183 100644 (file)
@@ -1,3 +1,8 @@
+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.
index f5542850ceacd249f0c9393d535e76de5b254511..1f326d5c1ad431e7d5245bca0dd07751d34e4cb4 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