argument. This avoids the argument from being silenced when the argument is
the NULL macro, which is defined in a system header. This also makes the output
a bit nicer, e.g.:
t.c:8:3: warning: null passed to a callee which requires a non-null argument
func1(NULL, cp2, i1);
^ ~~~~
vs something like:
t.c:8:10: warning: argument is null where non-null is required
func1(NULL, cp2, i1);
^
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72393
91177308-0d34-0410-b5e6-
96231b3b80d8
{
for (NonNullAttr::iterator i = NonNull->begin(), e = NonNull->end();
i != e; ++i) {
- const Expr *ArgExpr = TheCall->getArg(*i)->IgnoreParenCasts();
+ const Expr *ArgExpr = TheCall->getArg(*i);
if (ArgExpr->isNullPointerConstant(Context))
- Diag(ArgExpr->getLocStart(), diag::warn_null_arg);
+ Diag(TheCall->getCallee()->getLocStart(), diag::warn_null_arg)
+ << ArgExpr->getSourceRange();
}
}