aboutsummaryrefslogtreecommitdiff
path: root/Analysis
AgeCommit message (Collapse)Author
2008-03-15Make a major restructuring of the clang tree: introduce a top-levelChris Lattner
lib dir and move all the libraries into it. This follows the main llvm tree, and allows the libraries to be built in parallel. The top level now enforces that all the libs are built before Driver, but we don't care what order the libs are built in. This speeds up parallel builds, particularly incremental ones. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48402 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-15Fixed 80 col. violations.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48400 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-15Disable creation of "ContentsOf" symbols. It was fundamentally broken on manyTed Kremenek
levels; eventually we will need a plug-in model (similar to GRTransferFuncs) to represent symbolic memory. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48399 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-15Added initialization to ErrorDiag to silence gcc's warning of the variableTed Kremenek
potentially being used uninitialized (which it cannot be). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48393 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-15Handle StmtExprs whose last contained statement is not an expression.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48388 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-15Compute alignment in bytes, not bits.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48387 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-15Implement transfer function logic for alignof operator (types).Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48386 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-15Added transfer function support in GRExprEngine for __extension__.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48385 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-14"panic" has 5 letters, not 4. Bug pointed out by Nuno Lopes!Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48377 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-14Hack to hardwire in some panic functions that are not marked noreturn.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48374 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-14Emit warnings for undefined control-flow.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48368 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-14Path-sensitive analyses no longer take a FunctionDecl, but any Decl representingTed Kremenek
a block of "code". Patched various ASTConsumers (such as ASTDumper) to have more support for processing ObjCMethodDecl. CFGVisitor now builds CFGs for ObjCMethodDecls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48363 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-13The LiveVariables analysis no longer requires a FunctionDecl&; this allows itTed Kremenek
to be run on other declarations of blocks of code (e.g., Objective-C methods.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48339 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-12Changed CallRetValSymbol to SymbolConjured to allow "conjured" symbols to be ↵Ted Kremenek
created for any expression, not just CallExprs. Added experimental support for conjuring symbols during assingments where the RHS is "unknown". This allows more value tracking for path-sensitivity. Fixed bug in "assumption" logic when processing symbolic constraints; we would improperly mark constraints we didn't support as infeasible. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48306 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-12Added generation of symbolic values for the return values of functions that haveTed Kremenek
no summaries (useful for false-path pruning). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48301 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-12In GRSimpleVals, added the generation of symbolic values for the return valuesTed Kremenek
of function calls. This is useful in pruning paths. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48299 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-12Improved ExplodedGraph::Trim to only show nodes reachable from a reverse BFSTed Kremenek
from the sources, and to try and generate only a single path from sources to roots. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48286 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-12Prototype (pre-alpha) implementation of CFRef checker.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48272 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-11Added pretty-printing support for checker-specific state for the CFRefCount ↵Ted Kremenek
checker. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48242 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-11Expanded graph-visualization to include optional pretty-printing of ↵Ted Kremenek
checker-specific state. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48238 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-11Expanded ValueState pretty-printing to use an optional "CheckerStatePrinter"Ted Kremenek
object to pretty-print the component of a state that is specific to a checker. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48237 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-11Expanded graph visualization interface to include specifying a range ofTed Kremenek
nodes to use a trim sources. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48236 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-11Added bookkeeping of error nodes.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48234 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-11Added main logic for typestate tracking for the CFRetain checker.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48231 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-11Added main skeleton for CFRetain transfer function logic.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48214 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-10Fix "error: explicit template specialization cannot have a storage class" Chris Lattner
with gcc 4.4, patch by Shantonu Sen! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48155 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-10More edge-case handling with using liveness information to prune dead state ↵Ted Kremenek
values. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48127 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-10More cleanups with using the liveness analysis to removed dead symbols andTed Kremenek
variables from the symbolic state. Now we keep a mapping from the predecessor node of a statement and its cleaned state, and interpose an accessor "GetState()" to return the cleaned state when the node is the predecessor node, and the real state otherwise. This obviates problem of ever accidentally cleaning the state more than once (thus blowing away new bindings by mistake). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48124 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-09When processing the transfer function for a statement, evaluateTed Kremenek
RemoveDeadBindings early because (1) it will always be called and (2) we can dispatch to a plug-in transfer function that can evaluate the effect of dead symbols (not yet added). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48114 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-09Refactored guards for "GRExprEngine::RemoveDeadBindings" directly into theTed Kremenek
method. This paves the way for other alterations to RemoveDeadBindings that are transparent to its callers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48113 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-09Bug fix in the transfer function for compound assignments: if the valueTed Kremenek
of the LHS expressions is Unknown, the value of the entire expression does not evaluate to the RHS (as is the case with normal assignments). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48102 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-09Fixed crash where SetBlkExpr would attempt to query the liveness data whenTed Kremenek
we weren't processing a statement within a basic block. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48087 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-09Bug fix: Don't call RemoveDeadBindings more than once (can kill newly ↵Ted Kremenek
generated values to Block-Level Expressions). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48079 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-07Increased worklist limit for GRSimpleVals.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48037 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-07Added --trim-path-graph to the driver to trim paths from the ExplodedGraphTed Kremenek
that are not related to error nodes. Fixed bug where we did not detect some NULL dereferences. Added "ExplodedGraph::Trim" to trim all nodes that cannot transitively reach a set of provided nodes. Fixed subtle bug in ExplodedNodeImpl where we could create predecessor iterators that included the mangled "sink" bit. The better fix is to integrate this bit into the void* for the wrapped State, not the NodeGroups representing a node's predecessors and successors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48036 91177308-0d34-0410-b5e6-96231b3b80d8
2008-03-07Improved graph visualization of ExplodedGraphs to include source line and columnTed Kremenek
information. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@48031 91177308-0d34-0410-b5e6-96231b3b80d8
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-06Fixed mismatched deallocation in GRBlockCounter::Factory::~Factory.Ted Kremenek
Reported by Zhongxing Xu! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47991 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 transfer function support for __builtin_expect.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47971 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 bogus assumption mistakenly introduced in r47955.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47958 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-05Minor cleanups (mainly indentation).Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47955 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-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-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