summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/BugReporter.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Allow two codepaths for PathDiagnostic generation. This patch mainly consists ofTed Kremenek2009-03-311-41/+77
| | | | | | refactoring to make this possible (no functionality change). llvm-svn: 68141
* Simplify more code by using SVal::getAsSymbol().Ted Kremenek2009-03-301-9/+4
| | | | llvm-svn: 68052
* Convert use of loc::SymbolVal and nonloc::SymbolVal to V.getAsSymbol(). ThisTed Kremenek2009-03-301-11/+4
| | | | | | | also makes this code more correct as it transparently handles SVals that wrapped TypedViewRegions(SymbolicRegions). llvm-svn: 68048
* Adjust control-flow endpoints for '&&' and '||'.Ted Kremenek2009-03-281-17/+49
| | | | llvm-svn: 67948
* Text PathDiagnosticBuilder::getEnclosingStmt() about '?'Ted Kremenek2009-03-281-2/+19
| | | | llvm-svn: 67909
* Teach PathDiagnosticBuilder::getEnclosingStmtLocation() about while/if/do/for,Ted Kremenek2009-03-281-2/+30
| | | | | | | etc., so that the "body" is always considered a top-level statement for edge transitions (even if it is an expression). llvm-svn: 67901
* BugReporter: For control-flow edges from 'if', 'for', 'do', 'while' toTed Kremenek2009-03-271-4/+40
| | | | | | | successor, using 'getEnclosingStmt()' to have the end location be the top-level Stmt* enclosing the target Expr*. llvm-svn: 67869
* BugReporter: PathDiagnosticBuilder::ExecutionContinues now returns aTed Kremenek2009-03-271-39/+43
| | | | | | PathDiagnosticLocation. llvm-svn: 67866
OpenPOWER on IntegriCloud