aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Analysis
AgeCommit message (Collapse)Author
2008-03-07Renamed ValueManager to BasicValueFactory.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48025 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-07Refined divide-by-zero checking to distinguish between must and mayTed Kremenek
divide-by-zero errors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48013 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-06fix typosGabor Greif
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47995 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-06Added boilerplate to execute the CF reference count checker (which isn't yet ↵Ted Kremenek
implemented). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47982 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05Added "CheckerState" field to ValueState.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47979 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05Small bug fix when handling CallExprs that generate sink nodes.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47970 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05Fixed bug that could case unwanted bifurcation of states when evaluating calls.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47964 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05Fixed a horribly insidious bit-masking bug in the implementation ofTed Kremenek
ExplodedNode that would occasionally result in heap corruption. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47956 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05remove the source location arguments to various target query methods.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47954 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05Reverted patch 47926 for ProgramPoint.h because it is currently buggy. May ↵Ted Kremenek
add back (fixed) later. Updated CFGStmtVisitor to be in accord with rr47913: CallExprs are no longer (automatically) block-level expressions in the CFG. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47935 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05Added support for ProgramPoints to represent ExplodedNodes in anotherTed Kremenek
ExplodedGraph. This allows us to build "layered" ExplodedGraphs where one simulation is layered on another. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47926 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05Plug-in transfer function "EvalCall" now takes as an argument the currentTed Kremenek
GRStmtNodeBuilder and is now responsible for adding its own nodes to the graph. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47923 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-05Cleaned up typedefs involving StateTy so that we always use "StateTy*" ↵Ted Kremenek
instead of StateTy. This is conceptually much cleaner, as it shows that the state is always a pointer. It also makes it easier to marshall these values around across the internal APIs of the path-sensitive engine. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47921 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-04Make GRStmtNodeBuilder only depend on StateTy, and not the type definitionTed Kremenek
of the entire checker. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47920 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-04Moved implementation of GRExprEngine::Nodify into GRStmtNodeBuilder. This willTed Kremenek
allow us to pass the builder to plug-in transfer functions and allow those functions to create intermediate nodes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47919 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-04Moved GRExprEngine::NodeSet out of GRExprEngine and made it a standalone ↵Ted Kremenek
class: ExplodedNodeSet. Made GRExprEngine::NodeSet a typedef of ExplodedNodeSet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47914 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-04Fixed another obscure node-caching bug.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47898 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-04Implemented "print" method for ValueState.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47894 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-04Fixed insidious state propagation bug that would sometimes cause the stateTed Kremenek
to bifurcate at the wrong places and not propagate at others. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47876 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-04Enhanced pretty-printing of undefined-argument errors.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47873 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-03Fixed subtle caching bug in ExplodedGraph that would cause some nodes toTed Kremenek
be incorrectly merged together. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47851 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-01newline at end of file, by David ChisnallChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47788 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-29Added extra check for calls to functions where we pass undefined valuesTed Kremenek
as arguments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47778 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-29Add checks for function calls via a function pointer that is NULL, Undefined,Ted Kremenek
or otherwise a constant integer value that doesn't evaluate to an address. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47774 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-29"Refinement" of hack to bound loop-traversals: visit any block at a maximum ↵Ted Kremenek
of 3 times along a given path. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47766 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-28Added checking for undefined results of '<<' and '>>' (shifting by too many ↵Ted Kremenek
bits, etc.) This current implementation only works when both operands are concrete values; later we will add support for symbolic values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47726 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-28Merged ValueState and ValueStateImpl into just ValueState, with ↵Ted Kremenek
GRExprEngine::StateTy just becoming ValueState*. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47714 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-28Renamed "Uninitialized" -> "Undefined" in path-sensitive value tracking engine.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47713 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27End paths when calling a function marked "noreturn."Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47690 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27When analyzing a function, eagerly create symbolic values for allTed Kremenek
globals/parameters at the beginning of the analysis. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47664 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-27Header file cleanups: reduce number of includes; move ValueState.h into ↵Ted Kremenek
include directory tree. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47661 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Fix bug when processing '?' operator: invalidate the old "Uninitialized" ↵Ted Kremenek
value of the block-level expression for ?. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47645 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Added boilerplate for plug-in transfer function support for CallExprs.Ted Kremenek
GRSimpleVals performs the following action: invalidate all values passed-by-reference. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47638 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Removed static analysis-specific diagnostics from DiagnosticKinds.def.Ted Kremenek
Use custom diagnostics for static analysis checkers. Added warnings for dereferencing uninitialized values and divide-by-zeroes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47626 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Major cleanup of the transfer function logic for '&&', '||', and '?'. WeTed Kremenek
now store in the state essentially which branch we took. This removes a bunch of bogus assumptions (and likely bugs), reduces the complexity of the implementation, and facilitates more optimizations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47613 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-26Added lazy "symbolication" of parameter variables and global variables.Ted Kremenek
Added recording of divide-by-zero and divide-by-uninitialized nodes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47586 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-25Added transfer function support for checking for divide-by-zero errors.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47547 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-22Added "assumption" logic for lval::FuncVal and lval::GotoLabel, and simplifiedTed Kremenek
assumption logic for lval::DeclVal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47466 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21Regression fix: Handle binary operators where both the left and rightTed Kremenek
operands are symbolic lvalues. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47459 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21RemoveDeadBindings should now check for UninitalizedVal, as it is a nowTed Kremenek
an error to cast it to LVal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47450 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21Simplified and generalized transfer function logic for casts, allowingTed Kremenek
the transfer function to be invoked without an Expr* for the Cast operation. Added implicit promotions to the transfer function logic for compound assignments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47444 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-21Major cleanup of path-sensitive analysis engine and the current analysisTed Kremenek
based on constant. prop. and limited symbolics. - Renamed class: RValue -> RVal, LValue -> LVal, etc. - Minor method renamings and interface cleanups. - Tightened the RVal "type system" so that UninitializedVal and UnknownVal cannot be cast to LVal or NonLVal. This forces these corner cases values to be explicitly handled early before being dispatched to plug-in transfer function logic. - Major cleanup in the transfer function logic for binary and unary operators. Still fixing some regressions, but we now explicitly handle Uninitialized and Unknown values in a more rigorous way. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47441 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20Implemented transfer function logic for unary '+'Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47357 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-20Placed transfer function logic for dereferences in its own method, while atTed Kremenek
the same time clearing up some logic of how the unary '*' operator is processed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47356 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Added special handling for UninitializedVals for the transfer function logicTed Kremenek
for pointer dereferences. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47340 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Implemented "getType()" for symbolic values representing the "contents" ofTed Kremenek
another symbolic value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47339 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Fixed bug classof() bug with RValues that could cause an UninitializedValTed Kremenek
or UnknownVal to be interpreted as an actual NonLValue/LValue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47304 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19Added boilerplate transfer function support for CallExprs.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47298 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-19--grsimple now reports the number of nodes in the ExplodedGraph forTed Kremenek
an analyzed function. GRExprEngine now records stores to "uninitialized lvalues" (which are sinks in the ExplodedGraph). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47293 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-18Added "size()" and "empty()" methods to ExplodedGraphImpl.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47289 91177308-0d34-0410-b5e6-96231b3b80d8