| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
can't track down.
llvm-svn: 70155
|
| |
|
|
| |
llvm-svn: 70144
|
| |
|
|
| |
llvm-svn: 70105
|
| |
|
|
|
|
| |
when popping location contexts.
llvm-svn: 69898
|
| |
|
|
|
|
| |
pieces for location contexts.
llvm-svn: 69895
|
| |
|
|
| |
llvm-svn: 69824
|
| |
|
|
|
|
| |
context.
llvm-svn: 69823
|
| |
|
|
|
|
|
|
| |
- Remove stale assertion that was breaking the test suite.
- When popping location contexts, only add a control-flow piece for fileID
locations.
llvm-svn: 69814
|
| |
|
|
|
|
| |
starts from the first character of the first statement.
llvm-svn: 69813
|
| |
|
|
|
|
|
|
| |
lazy PCH deserialization. Propagate that argument wherever it needs to
be. No functionality change, except that I've tightened up a few PCH
tests in preparation.
llvm-svn: 69406
|
| |
|
|
| |
llvm-svn: 68495
|
| |
|
|
|
|
| |
pieces between block entrance and block end unless necessary.
llvm-svn: 68483
|
| |
|
|
| |
llvm-svn: 68476
|
| |
|
|
|
|
| |
contexts". This allows us to use a stack of contexts to keep track of what control-flow pieces to include when exiting blocks like 'if', 'for', etc.
llvm-svn: 68473
|
| |
|
|
| |
llvm-svn: 68283
|
| |
|
|
| |
llvm-svn: 68281
|
| |
|
|
|
|
| |
enclosing statement when jumping to a subexpression.
llvm-svn: 68244
|
| |
|
|
| |
llvm-svn: 68236
|
| |
|
|
|
|
|
|
| |
- When processing BlockEdges with terminators, using the condition as the
control-flow point for terminators that are expressions (e.g., '&&', '?')
- When processing events, allow intra-compound statement "jumping"
llvm-svn: 68228
|
| |
|
|
|
|
| |
start of the function/method.
llvm-svn: 68217
|
| |
|
|
|
|
|
| |
intra-compound statement jumps unless they are between terminators (i.e.,
branches).
llvm-svn: 68216
|
| |
|
|
|
|
|
|
|
| |
instead of a FullSourceLoc. This resulted in a bunch of small edits in various
clients.
- Updated BugReporter to include an alternate PathDiagnostic generation
algorithm for PathDiagnosticClients desiring more control-flow pieces.
llvm-svn: 68193
|
| |
|
|
| |
llvm-svn: 68157
|
| |
|
|
|
|
| |
refactoring to make this possible (no functionality change).
llvm-svn: 68141
|
| |
|
|
| |
llvm-svn: 68052
|
| |
|
|
|
|
|
| |
also makes this code more correct as it transparently handles SVals that wrapped
TypedViewRegions(SymbolicRegions).
llvm-svn: 68048
|
| |
|
|
| |
llvm-svn: 67948
|
| |
|
|
| |
llvm-svn: 67909
|
| |
|
|
|
|
|
| |
etc., so that the "body" is always considered a top-level statement for edge
transitions (even if it is an expression).
llvm-svn: 67901
|
| |
|
|
|
|
|
| |
successor, using 'getEnclosingStmt()' to have the end location be the top-level
Stmt* enclosing the target Expr*.
llvm-svn: 67869
|
| |
|
|
|
|
| |
PathDiagnosticLocation.
llvm-svn: 67866
|
| |
|
|
|
|
|
|
| |
- Added an internal helper class 'PathDiagnosticBuilder' which now bundles the
'ExecutionContinues' methods.
- Added preliminary diagnostics for short-circuit '&&' and '||'
llvm-svn: 67822
|
| |
|
|
|
|
| |
- Have PathDiagnosticControlFlowPiece use a vector of PathDiagnosticLocationPairs to represent transitions.
llvm-svn: 67786
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Zhongxing and I discussed by email.
Main changes:
- Removed SymIntConstraintVal and SymIntConstraint
- Added SymExpr as a parent class to SymbolData, SymSymExpr, SymIntExpr
- Added nonloc::SymExprVal to wrap SymExpr
- SymbolRef is now just a typedef of 'const SymbolData*'
- Bunch of minor code cleanups in how some methods were invoked (no functionality change)
This changes are part of a long-term plan to have full symbolic expression
trees. This will be useful for lazily evaluating complicated expressions.
llvm-svn: 67731
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ExplodedGraph::TrimGraph:
- Just do a DFS both ways instead of BFS-DFS. We're just determining what subset
of the nodes are reachable from the root and reverse-reachable from the bug
nodes. DFS is more efficient for this task.
BugReporter:
- MakeReportGraph: Do a reverse-BFS instead of a reverse-DFS to determine the
approximate shortest path through the simulation graph. We were seeing some
weird cases where too many loops were being reported for simple bugs. Possibly
we will need to replace this with actually computing the shortest path in
terms of line numbers.
llvm-svn: 66842
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- PathDiagnosticControlFlowPiece now consists of a "start" and "end" location
to indicating the branch location and where the branch goes.
BugReporter:
- Updated BugReporter to construct PathDiagnosticControlFlowPiece objects with
"end" locations.
PlistDiagnostics:
- Plists now contain the bug "type" (not just bug "category")
- Plists now encode control-flow pieces differently than events; now the
"start" and "end" locations are recorded
llvm-svn: 66818
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Group control flow and event PathDiagnosticPieces into PathDiagnosticMacroPieces.
- Afterwards, eliminate any PathDiagnosticMacroPieces from a PathDiagnostic that
contain no informative events.
HTMLDiagnostics:
- Use new information about PathDiagnosticMacroPieces to specially format
message bubbles for macro expansions containing interesting events.
llvm-svn: 66524
|
| |
|
|
|
|
|
|
| |
PathDiagnosticControlFlowPiece to distinguish (in the class hierarchy) between
events and control-flow diagnostic pieces. Clients must now use these directly
when constructing PathDiagnosticPieces.
llvm-svn: 66310
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- Store bindings using a MemRegion -> SVal binding instead of VarDecl -> SVal
binding. This mirrors some of the idea of RegionStore, but is far simpler and
not nearly as functional. This leads to some code simplification and
some potential for some minor precision hacks.
Along the way...
- constify the use of MemRegion* in a few places
- add operator<<(llvm::raw_ostream, const MemRegion*)
llvm-svn: 66163
|
| |
|
|
|
|
|
|
|
|
|
| |
SVal::getAsLocSymbol(). This simplifies the code and allows the retain/release
checker to (I believe) also correctly reason about location symbols wrapped in
SymbolicRegions.
Along the way I cleaned up SymbolRef a little, disallowing implicit casts to
'unsigned'.
llvm-svn: 65972
|
| |
|
|
|
|
| |
"ControlFlow".
llvm-svn: 65876
|
| |
|
|
|
|
| |
'.' or '->'.
llvm-svn: 65651
|
| |
|
|
| |
llvm-svn: 65568
|
| |
|
|
|
|
| |
- No functionality change.
llvm-svn: 65560
|
| |
|
|
|
|
| |
'method' or 'funciton'.
llvm-svn: 65346
|
| |
|
|
|
|
| |
case where an "Execution continues..." diagnostic could result in an empty message bubble.
llvm-svn: 65342
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
back to the summary used when evaluating the statement associated with a
simulation node. This is now being used to help improve the checker's
diagnostics. To get things started, the checker now emits a path diagnostic
indicating that 'autorelease' is a no-op in GC mode.
Some of these changes are exposing further grossness in the interface between
BugReporter and the ExplodedGraph::Trim facilities. These really need to be
cleaned up one day.
llvm-svn: 64881
|
| |
|
|
| |
llvm-svn: 64259
|
| |
|
|
| |
llvm-svn: 64038
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the ownership of BugTypes and BugReports. Now BugReports are owned by BugTypes,
and BugTypes are owned by the BugReporter object.
The major functionality change in this patch is that reports are not immediately
emitted by a call to BugReporter::EmitWarning (now called EmitReport), but
instead of queued up in report "equivalence classes". When
BugReporter::FlushReports() is called, it emits one diagnostic per report
equivalence class. This provides a nice cleanup with the caching of reports as
well as enables the BugReporter engine to select the "best" path for reporting a
path-sensitive bug based on all the locations in the ExplodedGraph that the same
bug could occur.
Along with this patch, Leaks are now coalesced into a common equivalence class
by their allocation site, and the "summary" diagnostic for leaks now reports the
allocation site as the location of the bug (this may later be augmented to also
provide an example location where the leak occurs).
llvm-svn: 63796
|