diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2013-07-31 18:39:08 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2013-07-31 18:39:08 +0000 |
| commit | 48d94c8d7669ec89ce445493558c290474dd87e2 (patch) | |
| tree | 97a8dc40bb5cdd31be60c2fa36fa3cd752367efb /clang | |
| parent | 131996b1697d440aa52250c7ec3f089c092b2a42 (diff) | |
| download | bcm5719-llvm-48d94c8d7669ec89ce445493558c290474dd87e2.tar.gz bcm5719-llvm-48d94c8d7669ec89ce445493558c290474dd87e2.zip | |
ObjectiveC arc: minor refactoring in my last patch
to avoid future false positives. // rdar://14569171
llvm-svn: 187509
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 2fbda8e0529..b321ad1172b 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -4061,10 +4061,14 @@ bool Sema::GatherArgumentsForCall(SourceLocation CallLoc, Param = FDecl->getParamDecl(i); // Strip the unbridged-cast placeholder expression off, if applicable. + bool CFAudited = false; if (Arg->getType() == Context.ARCUnbridgedCastTy && FDecl && FDecl->hasAttr<CFAuditedTransferAttr>() && (!Param || !Param->hasAttr<CFConsumedAttr>())) Arg = stripARCUnbridgedCast(Arg); + else if (FDecl && FDecl->hasAttr<CFAuditedTransferAttr>() && + (!Param || !Param->hasAttr<CFConsumedAttr>())) + CFAudited = true; InitializedEntity Entity = Param ? InitializedEntity::InitializeParameter(Context, Param, ProtoArgType) @@ -4072,8 +4076,7 @@ bool Sema::GatherArgumentsForCall(SourceLocation CallLoc, Proto->isArgConsumed(i)); // Remember that parameter belongs to a CF audited API. - if (FDecl && FDecl->hasAttr<CFAuditedTransferAttr>() && - (!Param || !Param->hasAttr<CFConsumedAttr>())) + if (CFAudited) Entity.setParameterCFAudited(); ExprResult ArgE = PerformCopyInitialization(Entity, |

