summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/BugReporter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* add a fixmeZhongxing Xu2009-07-291-2/+4
| | | | llvm-svn: 77447
* Fix helper function GetNextStmt() to look for the first statement that has aTed Kremenek2009-07-281-0/+5
| | | | | | valid SourceLocation. llvm-svn: 77280
* Refactor 'PostStmt' and 'PreStmt' to subclass a common parent 'StmtPoint'.Ted Kremenek2009-07-221-23/+26
| | | | | | | | | | | | 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
* Move the source-level CFG from libAST to libAnalysis.Ted Kremenek2009-07-161-1/+1
| | | | llvm-svn: 76092
* Remove the ASTContext parameter from the getBody() methods of Decl and ↵Argyrios Kyrtzidis2009-06-301-4/+3
| | | | | | | | subclasses. Timings showed no significant difference before and after the commit. llvm-svn: 74504
* Introduce a new concept to the static analyzer: SValuator.Ted Kremenek2009-06-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* API cleanup: move more methods from GRStateManager to GRState.Ted Kremenek2009-06-231-1/+1
| | | | llvm-svn: 73968
* Move clients over from using GRStateManager::BindXXX and friends toTed Kremenek2009-06-181-1/+1
| | | | | | GRState->bindXXX and friends (and constify some arguments along the way). llvm-svn: 73740
* Fix another bug in BugReporter where we wouldn't always select the bug ↵Ted Kremenek2009-05-161-14/+20
| | | | | | report in a bug equivalence class with the shortest path. llvm-svn: 71920
* BugReporter (extensive diagnostics): Do not include the range of target '}'Ted Kremenek2009-05-151-4/+6
| | | | llvm-svn: 71832
* BugReporter (extensive diagnostics): Add control-flow piece to '}' inTed Kremenek2009-05-151-16/+36
| | | | | | | loop body when generating 'Looping back to the head of the loop' diagnostics. llvm-svn: 71829
* BugReport::getEndPath() - Only add a Stmt's range to the constructed ↵Ted Kremenek2009-05-111-5/+8
| | | | | | PathDiagnosticEventPiece if the BugReport contained no explicit ranges. llvm-svn: 71516
* EdgeBuilder: DeclStmts and BinaryOperators are not the enclosing location ↵Ted Kremenek2009-05-111-1/+26
| | | | | | context when they are used as initialization code for loops. llvm-svn: 71480
* EdgeBuilder::cleanUpLocation() should used the PathDiagnosticLocation ↵Ted Kremenek2009-05-111-16/+31
| | | | | | constructor for a single point, not a range. llvm-svn: 71477
* BugReporter (extensive diagnostics): Add EdgeBuilder::cleanUpLocation for ↵Ted Kremenek2009-05-111-28/+34
| | | | | | canonicalization locations and use this in both popLocation and rawAddEdge. llvm-svn: 71470
* analyzer:Ted Kremenek2009-05-101-1/+1
| | | | | | | | - Improve -autorelease diagnostics. - Improve VLA diagnostics. - Use "short description" for bug when outputting to TextDiagnostics llvm-svn: 71383
* Add preliminary support for enhancing null-pointer dereference diagnostics.Ted Kremenek2009-05-071-46/+54
| | | | llvm-svn: 71135
* Refactor BugReporter interface to have a new 'BugReporterContext' andTed Kremenek2009-05-061-64/+55
| | | | | | | | | | | '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
* BugReporter (extensive diagnostics): improve location context generation for theTed Kremenek2009-05-051-3/+29
| | | | | | start of 'do' and '@synchronized' statements. llvm-svn: 71038
* BugReporter (extensive diagnostics): Fix getEnclosingStmtLocation to reasonTed Kremenek2009-05-051-7/+8
| | | | | | | about Exprs that are not consumed and fix where the loop iteration diagnostic goes. llvm-svn: 71027
* BugReporter (extensive diagnostics): don't mark location contexts that areTed Kremenek2009-05-041-2/+3
| | | | | | control-flow expressions as dead. llvm-svn: 70887
* BugReporter (extensive diagnostics): introduce the notion of a "dead"Ted Kremenek2009-05-011-10/+41
| | | | | | | | 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
* Remove #if 0'ed code.Ted Kremenek2009-05-011-173/+0
| | | | llvm-svn: 70542
* Fix null dereference.Ted Kremenek2009-04-291-1/+1
| | | | llvm-svn: 70417
* BugReporter/PathDiagnostics:Ted Kremenek2009-04-291-4/+7
| | | | | | | | | - 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
* Extensive diagnostics: Do not add a location context for do...while statements.Ted Kremenek2009-04-281-1/+1
| | | | llvm-svn: 70286
* BugReporter (extensive diagnostics): Clean up do...while control-flow edges, andTed Kremenek2009-04-281-7/+33
| | | | | | add "Looping back to the head of the loop" diagnostic for loops. llvm-svn: 70285
* Implement function-try-blocks. However, there's a very subtle bug that I ↵Sebastian Redl2009-04-261-2/+4
| | | | | | can't track down. llvm-svn: 70155
* Minor code cleanup.Eli Friedman2009-04-261-16/+4
| | | | llvm-svn: 70144
* split ObjC and C++ Statements out into their own headers.Chris Lattner2009-04-261-2/+2
| | | | llvm-svn: 70105
* BugReporter (extensive diagnostics): Recursively adjust the referred expressionTed Kremenek2009-04-231-12/+16
| | | | | | when popping location contexts. llvm-svn: 69898
* BugReporter (extensive diagnostics): Ignore parentheses when added control-flowTed Kremenek2009-04-231-0/+16
| | | | | | pieces for location contexts. llvm-svn: 69895
* BugReporter (extensive diagnostics): Use correct location for location contexts.Ted Kremenek2009-04-221-1/+1
| | | | llvm-svn: 69824
* BugReporter (extensive diagnostics): always add an edge if there is no locationTed Kremenek2009-04-221-1/+8
| | | | | | context. llvm-svn: 69823
* BugReporter (extensive diagnostics):Ted Kremenek2009-04-221-3/+2
| | | | | | | | - 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
* BugReporter (extensive diagnostic algorithm): The initial control-flow edge nowTed Kremenek2009-04-221-2/+16
| | | | | | starts from the first character of the first statement. llvm-svn: 69813
* FunctionDecl::getBody() is getting an ASTContext argument for use inDouglas Gregor2009-04-181-3/+3
| | | | | | | | 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
* Removed some commented code.Ted Kremenek2009-04-071-16/+3
| | | | llvm-svn: 68495
* PathDiagnostic generation: experiment with avoiding generation of control-flowTed Kremenek2009-04-071-4/+4
| | | | | | pieces between block entrance and block end unless necessary. llvm-svn: 68483
* Don't overguard to adding a control-flow piece when "alwaysAdd" is true.Ted Kremenek2009-04-071-2/+2
| | | | llvm-svn: 68476
* Rewrite control-flow diagnostic generation "extensive" algorithm using "edgeTed Kremenek2009-04-061-22/+277
| | | | | | 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
* Add another null pointer check. Simplify condition.Ted Kremenek2009-04-021-7/+8
| | | | llvm-svn: 68283
* Add null pointer check.Ted Kremenek2009-04-021-1/+2
| | | | llvm-svn: 68281
* BugReporter, extensive path-diagnostics: add an extra control-flow edge to theTed Kremenek2009-04-011-0/+32
| | | | | | enclosing statement when jumping to a subexpression. llvm-svn: 68244
* Fix comment.Ted Kremenek2009-04-011-1/+1
| | | | llvm-svn: 68236
* BugReporter: for extensive path diagnostics:Ted Kremenek2009-04-011-11/+9
| | | | | | | | - 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
* BugReporter: for extensive PathDiagnostic generation, add control-flow from theTed Kremenek2009-04-011-1/+17
| | | | | | start of the function/method. llvm-svn: 68217
* BugReporter: For the "extensive" PathDiagnostic generation algorithm, elide mostTed Kremenek2009-04-011-13/+21
| | | | | | | intra-compound statement jumps unless they are between terminators (i.e., branches). llvm-svn: 68216
* - Changed PathDiagnosticPiece::getLocation() to return a PathDiagnosticLocationTed Kremenek2009-04-011-5/+168
| | | | | | | | | 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
* More code reshuffling. No functionality change.Ted Kremenek2009-03-311-465/+465
| | | | llvm-svn: 68157
OpenPOWER on IntegriCloud