| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 77447
|
| |
|
|
|
|
| |
valid SourceLocation.
llvm-svn: 77280
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Educate GRExprEngine::VisitGraph() about 'PreStmt'.
Mark the constructor of 'PostStmt' to be explicit, preventing implicit
conversions and the selection of the wrong 'generateNode' method in
GRStmtNodeBuilder.
Constify a bunch of arguments, which falls out of the changes to ProgramPoint.
llvm-svn: 76809
|
| |
|
|
| |
llvm-svn: 76092
|
| |
|
|
|
|
|
|
| |
subclasses.
Timings showed no significant difference before and after the commit.
llvm-svn: 74504
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GRTransferFuncs had the conflated role of both constructing SVals (symbolic
expressions) as well as handling checker-specific logic. Now SValuator has the
role of constructing SVals from expressions and GRTransferFuncs just handles
checker-specific logic. The motivation is by separating these two concepts we
will be able to much more easily create richer constraint-generating logic
without coupling it to the main checker transfer function logic.
We now have one implementation of SValuator: SimpleSValuator.
SimpleSValuator is essentially the SVal-related logic that was in GRSimpleVals
(which is removed in this patch). This includes the logic for EvalBinOp,
EvalCast, etc. Because SValuator has a narrower role than the old
GRTransferFuncs, the interfaces are much simpler, and so is the implementation
of SimpleSValuator compared to GRSimpleVals. I also did a line-by-line review of
SVal-related logic in GRSimpleVals and cleaned it up while moving it over to
SimpleSValuator.
As a consequence of removing GRSimpleVals, there is no longer a
'-checker-simple' option. The '-checker-cfref' did everything that option did
but also ran the retain/release checker. Of course a user may not always wish to
run the retain/release checker, nor do we wish core analysis logic buried in the
checker-specific logic. The next step is to refactor the logic in CFRefCount.cpp
to separate out these pieces into the core analysis engine.
llvm-svn: 74229
|
| |
|
|
| |
llvm-svn: 73968
|
| |
|
|
|
|
| |
GRState->bindXXX and friends (and constify some arguments along the way).
llvm-svn: 73740
|
| |
|
|
|
|
| |
report in a bug equivalence class with the shortest path.
llvm-svn: 71920
|
| |
|
|
| |
llvm-svn: 71832
|
| |
|
|
|
|
|
| |
loop body when generating 'Looping back to the head of the loop'
diagnostics.
llvm-svn: 71829
|
| |
|
|
|
|
| |
PathDiagnosticEventPiece if the BugReport contained no explicit ranges.
llvm-svn: 71516
|
| |
|
|
|
|
| |
context when they are used as initialization code for loops.
llvm-svn: 71480
|
| |
|
|
|
|
| |
constructor for a single point, not a range.
llvm-svn: 71477
|
| |
|
|
|
|
| |
canonicalization locations and use this in both popLocation and rawAddEdge.
llvm-svn: 71470
|
| |
|
|
|
|
|
|
| |
- Improve -autorelease diagnostics.
- Improve VLA diagnostics.
- Use "short description" for bug when outputting to TextDiagnostics
llvm-svn: 71383
|
| |
|
|
| |
llvm-svn: 71135
|
| |
|
|
|
|
|
|
|
|
|
| |
'BugReporterVisitor'. This simplifies callbacks from BugReporter to BugReports
(via VisitNode). It also lays the foundation for arbitrary visitor "call backs"
that can be registered to a BugReporterContext as a PathDiagnostic is
constructed. These call backs can help operate as separate "experts" that can
work on constructed pieces of a PathDiagnostic for which they possess special
knowledge.
llvm-svn: 71121
|
| |
|
|
|
|
| |
start of 'do' and '@synchronized' statements.
llvm-svn: 71038
|
| |
|
|
|
|
|
| |
about Exprs that are not consumed and fix where the loop iteration diagnostic
goes.
llvm-svn: 71027
|
| |
|
|
|
|
| |
control-flow expressions as dead.
llvm-svn: 70887
|
| |
|
|
|
|
|
|
| |
location context. This allows us to postpone the decision of whether
or not a context should add a control-flow piece to the diagnostics
when inspecting its subexpressions.
llvm-svn: 70545
|
| |
|
|
| |
llvm-svn: 70542
|
| |
|
|
| |
llvm-svn: 70417
|
| |
|
|
|
|
|
|
|
| |
- Add an (optional) short description for BugReports for clients that want
to distinguish between long and short descriptions for bugs
- Make the bug report for VLA less obscene for Plist diagnostics by using
the short description
llvm-svn: 70415
|
| |
|
|
| |
llvm-svn: 70286
|
| |
|
|
|
|
| |
add "Looping back to the head of the loop" diagnostic for loops.
llvm-svn: 70285
|
| |
|
|
|
|
| |
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
|