diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2019-01-10 18:13:59 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2019-01-10 18:13:59 +0000 |
commit | 585a210e5f69d960e6a6e25601d6576fa47cb397 (patch) | |
tree | 4876935a6ba8657ed6de7b12239a58d19510017c /clang/lib/ARCMigrate/ObjCMT.cpp | |
parent | 7e3016dec4abd700e8e0828f1e20c86b0a04510b (diff) | |
download | bcm5719-llvm-585a210e5f69d960e6a6e25601d6576fa47cb397.tar.gz bcm5719-llvm-585a210e5f69d960e6a6e25601d6576fa47cb397.zip |
[analyzer] [NFC] Track object type with ArgEffect in RetainCountChecker.
This would be needed in the future.
https://reviews.llvm.org/D56040
llvm-svn: 350858
Diffstat (limited to 'clang/lib/ARCMigrate/ObjCMT.cpp')
-rw-r--r-- | clang/lib/ARCMigrate/ObjCMT.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/clang/lib/ARCMigrate/ObjCMT.cpp b/clang/lib/ARCMigrate/ObjCMT.cpp index b349434907b..c3f849b7fad 100644 --- a/clang/lib/ARCMigrate/ObjCMT.cpp +++ b/clang/lib/ARCMigrate/ObjCMT.cpp @@ -1484,13 +1484,13 @@ void ObjCMigrateASTConsumer::AddCFAnnotations(ASTContext &Ctx, pe = FuncDecl->param_end(); pi != pe; ++pi, ++i) { const ParmVarDecl *pd = *pi; ArgEffect AE = AEArgs[i]; - if (AE == DecRef && !pd->hasAttr<CFConsumedAttr>() && + if (AE.getKind() == DecRef && !pd->hasAttr<CFConsumedAttr>() && NSAPIObj->isMacroDefined("CF_CONSUMED")) { edit::Commit commit(*Editor); commit.insertBefore(pd->getLocation(), "CF_CONSUMED "); Editor->commit(commit); } - else if (AE == DecRefMsg && !pd->hasAttr<NSConsumedAttr>() && + else if (AE.getKind() == DecRefMsg && !pd->hasAttr<NSConsumedAttr>() && NSAPIObj->isMacroDefined("NS_CONSUMED")) { edit::Commit commit(*Editor); commit.insertBefore(pd->getLocation(), "NS_CONSUMED "); @@ -1536,13 +1536,13 @@ ObjCMigrateASTConsumer::CF_BRIDGING_KIND pe = FuncDecl->param_end(); pi != pe; ++pi, ++i) { const ParmVarDecl *pd = *pi; ArgEffect AE = AEArgs[i]; - if (AE == DecRef /*CFConsumed annotated*/ || AE == IncRef) { - if (AE == DecRef && !pd->hasAttr<CFConsumedAttr>()) + if (AE.getKind() == DecRef /*CFConsumed annotated*/ || + AE.getKind() == IncRef) { + if (AE.getKind() == DecRef && !pd->hasAttr<CFConsumedAttr>()) ArgCFAudited = true; - else if (AE == IncRef) + else if (AE.getKind() == IncRef) ArgCFAudited = true; - } - else { + } else { QualType AT = pd->getType(); if (!AuditedType(AT)) { AddCFAnnotations(Ctx, CE, FuncDecl, FuncIsReturnAnnotated); @@ -1610,7 +1610,7 @@ void ObjCMigrateASTConsumer::AddCFAnnotations(ASTContext &Ctx, pe = MethodDecl->param_end(); pi != pe; ++pi, ++i) { const ParmVarDecl *pd = *pi; ArgEffect AE = AEArgs[i]; - if (AE == DecRef && !pd->hasAttr<CFConsumedAttr>() && + if (AE.getKind() == DecRef && !pd->hasAttr<CFConsumedAttr>() && NSAPIObj->isMacroDefined("CF_CONSUMED")) { edit::Commit commit(*Editor); commit.insertBefore(pd->getLocation(), "CF_CONSUMED "); @@ -1626,13 +1626,14 @@ void ObjCMigrateASTConsumer::migrateAddMethodAnnotation( return; CallEffects CE = CallEffects::getEffect(MethodDecl); - bool MethodIsReturnAnnotated = (MethodDecl->hasAttr<CFReturnsRetainedAttr>() || - MethodDecl->hasAttr<CFReturnsNotRetainedAttr>() || - MethodDecl->hasAttr<NSReturnsRetainedAttr>() || - MethodDecl->hasAttr<NSReturnsNotRetainedAttr>() || - MethodDecl->hasAttr<NSReturnsAutoreleasedAttr>()); - - if (CE.getReceiver() == DecRefMsg && + bool MethodIsReturnAnnotated = + (MethodDecl->hasAttr<CFReturnsRetainedAttr>() || + MethodDecl->hasAttr<CFReturnsNotRetainedAttr>() || + MethodDecl->hasAttr<NSReturnsRetainedAttr>() || + MethodDecl->hasAttr<NSReturnsNotRetainedAttr>() || + MethodDecl->hasAttr<NSReturnsAutoreleasedAttr>()); + + if (CE.getReceiver().getKind() == DecRefMsg && !MethodDecl->hasAttr<NSConsumesSelfAttr>() && MethodDecl->getMethodFamily() != OMF_init && MethodDecl->getMethodFamily() != OMF_release && @@ -1666,8 +1667,8 @@ void ObjCMigrateASTConsumer::migrateAddMethodAnnotation( pe = MethodDecl->param_end(); pi != pe; ++pi, ++i) { const ParmVarDecl *pd = *pi; ArgEffect AE = AEArgs[i]; - if ((AE == DecRef && !pd->hasAttr<CFConsumedAttr>()) || AE == IncRef || - !AuditedType(pd->getType())) { + if ((AE.getKind() == DecRef && !pd->hasAttr<CFConsumedAttr>()) || + AE.getKind() == IncRef || !AuditedType(pd->getType())) { AddCFAnnotations(Ctx, CE, MethodDecl, MethodIsReturnAnnotated); return; } |