From d2edcd7083601bc08789787331399624b85b843b Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 17 Jan 2018 12:44:42 -0500 Subject: [PATCH] PR c++/81067 - redundant NULL warning. * call.c (convert_like_real): Restore null_node handling. From-SVN: r256803 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/call.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ff09fe32fdb..bdcac476385 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2018-01-17 Jason Merrill + + PR c++/81067 - redundant NULL warning. + * call.c (convert_like_real): Restore null_node handling. + 2018-01-17 Jason Merrill PR c++/81843 - ICE with variadic member template. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index f5542850cea..1f326d5c1ad 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -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 -- 2.30.2