r181360 - [analyzer; alternate arrows] remove pruning of loop diagnostics.

Ted Kremenek kremenek at apple.com
Tue May 7 14:12:01 PDT 2013


Author: kremenek
Date: Tue May  7 16:12:00 2013
New Revision: 181360

URL: http://llvm.org/viewvc/llvm-project?rev=181360&view=rev
Log:
[analyzer; alternate arrows] remove pruning of loop diagnostics.

Modified:
    cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp

Modified: cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp?rev=181360&r1=181359&r2=181360&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp Tue May  7 16:12:00 2013
@@ -1566,45 +1566,6 @@ static void addEdgeToPath(PathPieces &pa
   PrevLoc = NewLoc;
 }
 
-enum EventCategorization { EC_None, EC_EnterLoop, EC_LoopingBack };
-
-typedef llvm::DenseMap<const PathDiagnosticEventPiece *,
-                       enum EventCategorization>
-        EventCategoryMap;
-
-
-static void pruneLoopEvents(PathPieces &path, EventCategoryMap &ECM) {
-  for (PathPieces::iterator I = path.begin(), E = path.end(); I != E; ++I) {
-    if (PathDiagnosticCallPiece *call = dyn_cast<PathDiagnosticCallPiece>(*I)) {
-      pruneLoopEvents(call->path, ECM);
-      continue;
-    }
-
-    PathDiagnosticEventPiece *I_event = dyn_cast<PathDiagnosticEventPiece>(*I);
-    if (!I_event || ECM[I_event] != EC_LoopingBack)
-      continue;
-
-    PathPieces::iterator Next = I; ++Next;
-    PathDiagnosticEventPiece *Next_event = 0;
-    for ( ; Next != E ; ++Next) {
-      Next_event = dyn_cast<PathDiagnosticEventPiece>(*Next);
-      if (Next_event)
-        break;
-    }
-
-    if (Next_event) {
-      EventCategorization E = ECM[Next_event];
-      if (E == EC_EnterLoop) {
-        PathDiagnosticLocation L = I_event->getLocation();
-        PathDiagnosticLocation L_next = Next_event->getLocation();
-        if (L == L_next) {
-          path.erase(Next);
-        }
-      }
-    }
-  }
-}
-
 static bool
 GenerateAlternateExtensivePathDiagnostic(PathDiagnostic& PD,
                                          PathDiagnosticBuilder &PDB,
@@ -1621,8 +1582,6 @@ GenerateAlternateExtensivePathDiagnostic
   llvm::DenseMap<const StackFrameContext *, PathDiagnosticLocation>
     PrevLocMap;
 
-  EventCategoryMap EventCategory;
-
   const ExplodedNode *NextNode = N->getFirstPred();
   while (NextNode) {
     N = NextNode;
@@ -1731,7 +1690,6 @@ GenerateAlternateExtensivePathDiagnostic
 
           addEdgeToPath(PD.getActivePath(), PrevLoc, p->getLocation(), LC);
           PD.getActivePath().push_front(p);
-          EventCategory[p] = EC_LoopingBack;
         }
 
         const CFGBlock *BSrc = BE->getSrc();
@@ -1746,7 +1704,6 @@ GenerateAlternateExtensivePathDiagnostic
               isInLoopBody(PM, getStmtBeforeCond(PM, TermCond, N), Term);
 
             const char *str = 0;
-            enum EventCategorization EC = EC_None;
 
             if (isJumpToFalseBranch(&*BE)) {
               if (!IsInLoopBody) {
@@ -1755,14 +1712,12 @@ GenerateAlternateExtensivePathDiagnostic
             }
             else {
               str = "Entering loop body";
-              EC = EC_EnterLoop;
             }
 
             if (str) {
               PathDiagnosticLocation L(TermCond, SM, PDB.LC);
               PathDiagnosticEventPiece *PE =
                 new PathDiagnosticEventPiece(L, str);
-              EventCategory[PE] = EC;
               PE->setPrunable(true);
               addEdgeToPath(PD.getActivePath(), PrevLoc,
                             PE->getLocation(), LC);
@@ -1794,11 +1749,6 @@ GenerateAlternateExtensivePathDiagnostic
     }
   }
 
-  if (report->isValid()) {
-    // Prune redundant loop diagnostics.
-    pruneLoopEvents(PD.getMutablePieces(), EventCategory);
-  }
-
   return report->isValid();
 }
 





More information about the cfe-commits mailing list