From: Ted Kremenek Date: Tue, 6 May 2008 18:11:36 +0000 (+0000) Subject: Experiment with not converting bug names to lower case. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=432af5985a22e098cbc2329c021d5e23c944fb91;p=clang Experiment with not converting bug names to lower case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50753 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/CFRefCount.cpp b/lib/Analysis/CFRefCount.cpp index 576de7dc09..d8faffa91b 100644 --- a/lib/Analysis/CFRefCount.cpp +++ b/lib/Analysis/CFRefCount.cpp @@ -219,6 +219,8 @@ class RetainSummaryManager { // ScratchArgs - A holding buffer for construct ArgEffects. ArgEffects ScratchArgs; + RetainSummary* StopSummary; + //==-----------------------------------------------------------------==// // Methods. //==-----------------------------------------------------------------==// @@ -247,8 +249,16 @@ class RetainSummaryManager { return getPersistentSummary(getArgEffects(), RE, ReceiverEff, DefaultEff); } + + RetainSummary* getPersistentStopSummary() { - return getPersistentSummary(RetEffect::MakeNoRet(),DoNothing, StopTracking); + if (StopSummary) + return StopSummary; + + StopSummary = getPersistentSummary(RetEffect::MakeNoRet(), + StopTracking, StopTracking); + + return StopSummary; } RetainSummary* getInitMethodSummary(Selector S); @@ -259,7 +269,7 @@ class RetainSummaryManager { public: RetainSummaryManager(ASTContext& ctx, bool gcenabled) - : Ctx(ctx), GCEnabled(gcenabled) { + : Ctx(ctx), GCEnabled(gcenabled), StopSummary(0) { InitializeInstMethSummaries(); InitializeMethSummaries(); @@ -569,22 +579,22 @@ RetainSummaryManager::getMethodSummary(ObjCMessageExpr* ME) { if (I != ObjCMethSummaries.end()) return I->second; - + // Only generate real summaries for methods involving // NSxxxx objects. - + if (!isNSType(ME->getReceiver()->getType())) { RetainSummary* Summ = getPersistentStopSummary(); ObjCMethSummaries[S] = Summ; return Summ; } - + // "initXXX": pass-through for receiver. const char* s = S.getIdentifierInfoForSlot(0)->getName(); if (strncmp(s, "init", 4) == 0) - return getInitMethodSummary(S); + return getInitMethodSummary(S); #if 0 // Generate a summary. For all "setYYY:" and "addXXX:" slots => StopTracking. @@ -631,6 +641,10 @@ void RetainSummaryManager::InitializeInstMethSummaries() { // Create the "mutableCopyWithZone:" selector. ObjCInstMethSummaries[ GetUnarySelector("mutableCopyWithZone", Ctx) ] = Summ; + + // Special cases: create the NSProcessInfo::processInfo selector. + ObjCInstMethSummaries[ GetNullarySelector("processInfo", Ctx) ] = + getPersistentSummary(RetEffect::MakeNoRet()); } void RetainSummaryManager::InitializeMethSummaries() { @@ -678,14 +692,19 @@ RetainSummaryManager::getInstanceMethodSummary(IdentifierInfo* ClsName, if (isGCEnabled()) return 0; + // Only generate real summaries for NSXXX classes. + + const char* cls = ClsName->getName(); + + if (cls[0] != 'N' || cls[1] != 'S') + return getPersistentStopSummary(); + // Heuristic: XXXXwithYYYY, where XXX is the class name with the "NS" // stripped off is usually an allocation. - const char* cls = ClsName->getName(); - const char* s = S.getIdentifierInfoForSlot(0)->getName(); + const char* s = S.getIdentifierInfoForSlot(0)->getName(); - if (cls[0] == 'N' && cls[1] == 'S') - cls += 2; + cls += 2; if (cls[0] == '\0' || s[0] == '\0' || tolower(cls[0]) != s[0]) return 0; @@ -1710,7 +1729,15 @@ namespace { Leak(CFRefCount& tf) : CFRefBug(tf) {} virtual const char* getName() const { - return getTF().isGCEnabled() ? "Memory Leak (GC)" : "Memory Leak"; + + if (getTF().isGCEnabled()) + return "Memory Leak (GC)"; + + if (getTF().getLangOptions().getGCMode() == LangOptions::HybridGC) + return "Memory Leak (Hybrid MM, non-GC)"; + + assert (getTF().getLangOptions().getGCMode() == LangOptions::NonGC); + return "Memory Leak"; } virtual const char* getDescription() const { diff --git a/utils/scan-build b/utils/scan-build index 9c83de0007..74e3c44824 100755 --- a/utils/scan-build +++ b/utils/scan-build @@ -364,7 +364,8 @@ ENDTEXT for my $row ( @Index ) { - my $bug_type = lc($row->[1]); + #my $bug_type = lc($row->[1]); + my $bug_type = ($row->[1]); if (!defined($Totals{$bug_type})) { $Totals{$bug_type} = 1; @@ -425,7 +426,8 @@ ENDTEXT my $ReportFile = $row->[0]; print OUT " "; - print OUT lc($row->[1]); + #print OUT lc($row->[1]); + print OUT $row->[1]; print OUT "\n"; # Update the file prefix.