r182505 - [analyzer; alternate edges] remove redundant adjacent "events" with the same text.
Ted Kremenek
kremenek at apple.com
Wed May 22 12:20:07 PDT 2013
We don't care about the old algorithm. It will go away in the near future. That's why I put it in optimizeEdges, which is where it belong is the old algorithm didn't exist.
On May 22, 2013, at 12:14 PM, Jordan Rose <jordan_rose at apple.com> wrote:
> This isn't really specific to the new edge generation, is it? Why put it in optimizeEdges?
>
> (We already have removeRedundantMsgs for another set of, uh, redundant messages.)
>
> Jordan
>
>
> On May 22, 2013, at 12:10 , Ted Kremenek <kremenek at apple.com> wrote:
>
>> Author: kremenek
>> Date: Wed May 22 14:10:41 2013
>> New Revision: 182505
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=182505&view=rev
>> Log:
>> [analyzer; alternate edges] remove redundant adjacent "events" with the same text.
>>
>> Fixes <rdar://problem/13949982>
>>
>> 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=182505&r1=182504&r2=182505&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp Wed May 22 14:10:41 2013
>> @@ -2026,6 +2026,31 @@ static void removePunyEdges(PathPieces &
>> }
>> }
>>
>> +static void removeIdenticalEvents(PathPieces &path) {
>> + for (PathPieces::iterator I = path.begin(), E = path.end(); I != E; ++I) {
>> + PathDiagnosticEventPiece *PieceI =
>> + dyn_cast<PathDiagnosticEventPiece>(*I);
>> +
>> + if (!PieceI)
>> + continue;
>> +
>> + PathPieces::iterator NextI = I; ++NextI;
>> + if (NextI == E)
>> + return;
>> +
>> + PathDiagnosticEventPiece *PieceNextI =
>> + dyn_cast<PathDiagnosticEventPiece>(*I);
>> +
>> + if (!PieceNextI)
>> + continue;
>> +
>> + // Erase the second piece if it has the same exact message text.
>> + if (PieceI->getString() == PieceNextI->getString()) {
>> + path.erase(NextI);
>> + }
>> + }
>> +}
>> +
>> static bool optimizeEdges(PathPieces &path, SourceManager &SM,
>> OptimizedCallsSet &OCS,
>> LocationContextMap &LCM) {
>> @@ -2199,6 +2224,8 @@ static bool optimizeEdges(PathPieces &pa
>> if (!hasChanges) {
>> // Remove any puny edges left over after primary optimization pass.
>> removePunyEdges(path, SM, PM);
>> + // Remove identical events.
>> + removeIdenticalEvents(path);
>> }
>>
>> return hasChanges;
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
More information about the cfe-commits
mailing list