diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2011-03-25 01:44:32 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2011-03-25 01:44:32 +0000 |
commit | d46932118612ec022248d05390d8e69283c56012 (patch) | |
tree | 4a9d78f4e1437f8ae1244d1d8029639fac703d05 /clang/lib/Sema/SemaChecking.cpp | |
parent | a52143bff35468a22ef907623fc0d4c8fe450096 (diff) | |
download | bcm5719-llvm-d46932118612ec022248d05390d8e69283c56012.tar.gz bcm5719-llvm-d46932118612ec022248d05390d8e69283c56012.zip |
Apply the nonnull attribute to constructor expressions too.
llvm-svn: 128253
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index de5a7964108..15644c99d91 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -313,7 +313,8 @@ bool Sema::CheckFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall) { for (specific_attr_iterator<NonNullAttr> i = FDecl->specific_attr_begin<NonNullAttr>(), e = FDecl->specific_attr_end<NonNullAttr>(); i != e; ++i) { - CheckNonNullArguments(*i, TheCall); + CheckNonNullArguments(*i, TheCall->getArgs(), + TheCall->getCallee()->getLocStart()); } return false; @@ -1030,15 +1031,15 @@ bool Sema::SemaCheckStringLiteral(const Expr *E, const CallExpr *TheCall, void Sema::CheckNonNullArguments(const NonNullAttr *NonNull, - const CallExpr *TheCall) { + const Expr * const *ExprArgs, + SourceLocation CallSiteLoc) { for (NonNullAttr::args_iterator i = NonNull->args_begin(), e = NonNull->args_end(); i != e; ++i) { - const Expr *ArgExpr = TheCall->getArg(*i); + const Expr *ArgExpr = ExprArgs[*i]; if (ArgExpr->isNullPointerConstant(Context, Expr::NPC_ValueDependentIsNotNull)) - Diag(TheCall->getCallee()->getLocStart(), diag::warn_null_arg) - << ArgExpr->getSourceRange(); + Diag(CallSiteLoc, diag::warn_null_arg) << ArgExpr->getSourceRange(); } } |