r200521 - [Sema] For -Wnon-literal-null-conversion warning, look through integer casts, which are used

James Dennett jdennett at googlers.com
Sat Feb 1 19:42:58 PST 2014

On Sat, Feb 1, 2014 at 6:05 PM, Dmitri Gribenko <gribozavr at gmail.com> wrote:
> On Fri, Jan 31, 2014 at 7:51 AM, Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
>> Author: akirtzidis
>> Date: Fri Jan 31 01:51:32 2014
>> New Revision: 200521
>> URL: http://llvm.org/viewvc/llvm-project?rev=200521&view=rev
>> Log:
>> [Sema] For -Wnon-literal-null-conversion warning, look through integer casts, which are used
>> by some projects in their null macro.
> Hi Argyrios,
> I wonder, why isn't this handled automatically by
> Expr::isNullPointerConstant -- it should be evaluating the whole
> constant expression in this case.
> Dmitri

I think we might not want to do this (i.e., we may wish to revert the patch).

A goal of -Wnon-literal-null-conversion is to match rules proposed for
C++14 (and possibly C++11 as a fix for core defect 903), and in those
rules only integer literals (and nullptr) are valid null pointer
constants.  The C++14 draft N3690 says "A null pointer constant is an
integer literal (2.14.2) with value zero or a prvalue of type

The previous implementation of -Wnon-literal-null-conversion would
warn those projects so that they could fix their code.  With this
change (r200521), their (newly) non-conforming code won't be

Likely we need to improve the documentation of this diagnostic in any
case.  The best extant description seems to be the commit message from
which says "...This is effectively a warning for code that violates
core issue 903 & thus will become standard error in the future,

-- James

More information about the cfe-commits mailing list