aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis
AgeCommit message (Collapse)Author
2009-04-09Refactor/cleanup reasoning of nil receivers in message expressions.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68661 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-08Enhance analyzer reasoning about sending messages to nil. A nil receiver ↵Ted Kremenek
returns 0 for scalars of size <= sizeof(void*). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68629 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-08New static analyzer check by Nikita Zhuk!Ted Kremenek
"The attached patch generates warnings of cases where an ObjC message is sent to a nil object and the size of return type of that message is larger than the size of void pointer. This may result in undefined return values as described in PR 2718. The patch also includes test cases." git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68585 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-07Remove hack from LiveVariables analysis where variables whose address are takenTed Kremenek
are considered 'live'. This hack isn't needed anymore because we have a separation in the path-sensitive analyzer between variable names and bindings; the analyzer can continue to reason about the storage of a variable after its name is no longer directly referenced. Now the live variables analysis literally means "is this name live". Along this line, update the dead stores checker to explicitly look for variables whose values have escaped. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68504 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-07Remove GetLeakNode. This isn't the right approach.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68502 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-07Remove period.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68497 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-07Eagerly compute the leak location when a leak occurs at the end of a path.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68496 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-07Removed some commented code.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68495 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-07PathDiagnostic generation: experiment with avoiding generation of control-flowTed Kremenek
pieces between block entrance and block end unless necessary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68483 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-07retain/release checker: When hunting for the leak location, don't walk theTed Kremenek
ExplodedGraph backwards. That may inadvertently result in reverse control-flow edges in the PathDiagostic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68477 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-07Don't overguard to adding a control-flow piece when "alwaysAdd" is true.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68476 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-06Rewrite control-flow diagnostic generation "extensive" algorithm using "edgeTed Kremenek
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68473 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-06PathDiagnosticLocation now also wraps Decls.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68470 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-03Sentence-case bug type.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68406 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-03retain/release checker: don't track NSPanel until we have better reasoning aboutTed Kremenek
the subtle ownership issues of such objects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68397 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-03This is the first step to gradually remove the use of loc::SymbolVal. NowZhongxing Xu
when creating symbolic values, we distinguish between location and non-location values. For location values, we create a symbolic region instead of a loc::SymbolVal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68373 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-02Sentence-type bug type and category.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68345 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-02Add another null pointer check. Simplify condition.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68283 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-02Fix grammar.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68282 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-02Add null pointer check.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68281 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-02More title-casing of bug type names.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68275 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-02Title-case the names of bug types.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68274 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-02Title-case the names of bug types.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68273 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01BugReporter, extensive path-diagnostics: add an extra control-flow edge to theTed Kremenek
enclosing statement when jumping to a subexpression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68244 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Fix comment.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68236 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01BugReporter: for extensive path diagnostics:Ted Kremenek
- 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" git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68228 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01BugReporter: for extensive PathDiagnostic generation, add control-flow from theTed Kremenek
start of the function/method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68217 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01BugReporter: For the "extensive" PathDiagnostic generation algorithm, elide mostTed Kremenek
intra-compound statement jumps unless they are between terminators (i.e., branches). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68216 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01Fix: <rdar://problem/6740387>. Sending nil to an object that returns a structTed Kremenek
should only be an error if that value is consumed. This fix was largely accomplished by moving 'isConsumedExpr' back to ParentMap. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68195 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-01- Changed PathDiagnosticPiece::getLocation() to return a PathDiagnosticLocationTed Kremenek
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68193 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31More code reshuffling. No functionality change.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68157 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-31Allow two codepaths for PathDiagnostic generation. This patch mainly consists ofTed Kremenek
refactoring to make this possible (no functionality change). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68141 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Re-apply 68028. The code had drifted enough that the tests would fail withoutTed Kremenek
it. Will discuss offline whether symbolic regions should by typed or typeless. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68070 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Revert 68028.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68068 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Remove dead code.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68063 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Simplify more code by using SVal::getAsSymbol().Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68052 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Simplify more code by using SVal::getAsSymbol() instead ofTed Kremenek
loc::SymbolVal/nonloc::SymbolVal probing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68049 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Convert use of loc::SymbolVal and nonloc::SymbolVal to V.getAsSymbol(). ThisTed Kremenek
also makes this code more correct as it transparently handles SVals that wrapped TypedViewRegions(SymbolicRegions). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68048 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Add version of GRExprEngine::AddCheck that registered a GRSimpleAPICheck thatTed Kremenek
will be called for every expression in a basic block. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68041 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Make SymbolicRegion untyped.Zhongxing Xu
Layer the type information with a TypedViewRegion on top of the SymbolicRegion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68028 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-30Implement a FIXME.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68024 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Fix regression in pointer comparison with NULL (e.g., 0 != ptr). This fixesTed Kremenek
<rdar://problem/6732151>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67954 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Adjust control-flow endpoints for '&&' and '||'.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67948 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28rename some methods.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67923 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Text PathDiagnosticBuilder::getEnclosingStmt() about '?'Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67909 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Teach PathDiagnosticBuilder::getEnclosingStmtLocation() about while/if/do/for,Ted Kremenek
etc., so that the "body" is always considered a top-level statement for edge transitions (even if it is an expression). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67901 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Change compound assignment operators to keep track of both the promoted Eli Friedman
LHS type and the computation result type; this encodes information into the AST which is otherwise non-obvious. Fix Sema to always come up with the right answer for both of these types. Fix IRGen and the analyzer to account for these changes. This fixes PR2601. The approach is inspired by PR2601 comment 2. Note that this changes real *= complex in CodeGen from a silent miscompilation to an explicit error. I'm not really sure that the analyzer changes are correct, or how to test them... someone more familiar with the analyzer should check those changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67889 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-27BugReporter: For control-flow edges from 'if', 'for', 'do', 'while' toTed Kremenek
successor, using 'getEnclosingStmt()' to have the end location be the top-level Stmt* enclosing the target Expr*. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67869 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-27BugReporter: PathDiagnosticBuilder::ExecutionContinues now returns aTed Kremenek
PathDiagnosticLocation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67866 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-27remove dead code.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67825 91177308-0d34-0410-b5e6-96231b3b80d8