Skip to content
CFRefCount.cpp 29.1 KiB
Newer Older

        case RefVal::Released:
          V = RefVal::makeUseAfterRelease();

//===----------------------------------------------------------------------===//
//===----------------------------------------------------------------------===//

void UseAfterRelease::EmitWarnings(BugReporter& BR) {
  for (CFRefCount::use_after_iterator I = TF.use_after_begin(),
        E = TF.use_after_end(); I != E; ++I) {
    
    RangedBugReport report(*this, I->first);
    report.addRange(I->second->getSourceRange());    
}

void BadRelease::EmitWarnings(BugReporter& BR) {
  for (CFRefCount::bad_release_iterator I = TF.bad_release_begin(),
       E = TF.bad_release_end(); I != E; ++I) {
    
    RangedBugReport report(*this, I->first);
    report.addRange(I->second->getSourceRange());    
//===----------------------------------------------------------------------===//
// Transfer function creation for external clients.
//===----------------------------------------------------------------------===//

GRTransferFuncs* clang::MakeCFRefCountTF(ASTContext& Ctx) {
  return new CFRefCount(Ctx);
}