diff options
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index a48a7b273e4..0b73f82639e 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -4400,16 +4400,10 @@ Sema::CheckReturnValExpr(Expr *RetValExp, QualType lhsType, CheckReturnStackAddr(*this, RetValExp, lhsType, ReturnLoc); // Check if the return value is null but should not be. - if (Attrs) - for (specific_attr_iterator<ReturnsNonNullAttr> - I = specific_attr_iterator<ReturnsNonNullAttr>(Attrs->begin()), - E = specific_attr_iterator<ReturnsNonNullAttr>(Attrs->end()); - I != E; ++I) { - if (CheckNonNullExpr(*this, RetValExp)) - Diag(ReturnLoc, diag::warn_null_ret) - << (isObjCMethod ? 1 : 0) << RetValExp->getSourceRange(); - break; - } + if (Attrs && hasSpecificAttr<ReturnsNonNullAttr>(*Attrs) && + CheckNonNullExpr(*this, RetValExp)) + Diag(ReturnLoc, diag::warn_null_ret) + << (isObjCMethod ? 1 : 0) << RetValExp->getSourceRange(); // C++11 [basic.stc.dynamic.allocation]p4: // If an allocation function declared with a non-throwing @@ -7381,10 +7375,7 @@ bool GetMatchingCType( return false; if (VD) { - for (specific_attr_iterator<TypeTagForDatatypeAttr> - I = VD->specific_attr_begin<TypeTagForDatatypeAttr>(), - E = VD->specific_attr_end<TypeTagForDatatypeAttr>(); - I != E; ++I) { + if (TypeTagForDatatypeAttr *I = VD->getAttr<TypeTagForDatatypeAttr>()) { if (I->getArgumentKind() != ArgumentKind) { FoundWrongKind = true; return false; |