aboutsummaryrefslogtreecommitdiff
path: root/Analysis
AgeCommit message (Collapse)Author
2008-01-17Added some experimental optimizations to remove dead values from theTed Kremenek
state. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46106 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Changed sorting criteria for DSPtr to put sub-expressions first in the valueTed Kremenek
map. This will allow us to quickly prune them from maps without searching the entire map. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46101 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Changed sorting criteria for DSPtr to sort Decl* before Expr*, andTed Kremenek
to sort sub-expressions before Block-level expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46100 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16IntegerLiterals are no longer evaluated to create separate nodes; theirTed Kremenek
values are determined when evaluating the parent expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46096 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Fixed bug where we performed addition instead of subtraction duringTed Kremenek
constant propagation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46095 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Fixed iterator bug in ExplodedNodeImpl::NodeGroup::end(); we would improperlyTed Kremenek
handle the case where the number of nodes was 0. Fixed bug in GREngineImpl where we did not proceed to the next statement when processing a PostStmt location. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46093 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Added initial graph visualization support for the GRConstants analysis.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46092 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Added support from retrieving stored values to variables.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46087 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Added support for assignments in GRConstants.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46086 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Fixed bug where GRConstants::AddBindings() did not check for valuesTed Kremenek
that were "not a constant." git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46085 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Fixed bug in cleanup of nodes in ExplodedNodeImpl where we should directlyTed Kremenek
call the dstor instead of using delete. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46084 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Hooked up the GRConstants analysis to the driver.Ted Kremenek
Fixed some compilation errors with GREngine that showed up during template instantiation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46074 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16More cleanups in DoStmt. The NodeSets are now vectors instead of sets, sinceTed Kremenek
node caching in GREngine will guarantee that we do not insert a node twice into a nodeset. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46071 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Adjusted DSPtr::Profile method again, since my last patch broke the build.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46051 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Changed 'Profile' method for DSPtr to incorporate the flags from theTed Kremenek
variant type, and not just the pointer value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46049 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Renamed some internal classes for the GR-Constant Propagation analysis.Ted Kremenek
Cleaned up GRConstants::AddBinding to not directly reference the predecessor node. Now we just manipulate the current state, and a driver function creates nodes as needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46040 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-15Added skeleton implementation of new constant-prop. analysis usingTed Kremenek
the graph reachability engine. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46036 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-15Removed implicit transitions to a "BlockExit" location; we now handleTed Kremenek
the end of the block by processing empty blocks (at BlockEntrance) or when we have just processed the last statement in a block (at PostStmt). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45991 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-14Added prototype implementation of path-sens. analysis core engine.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45986 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-13Moved destructor logic of templated class ExplodedGraph to non-templatedTed Kremenek
parent class ExplodedGraphImpl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45930 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-13Created ExplodedGraph.cpp and moved most method implementations ofTed Kremenek
ExplodedNodeImpl::NodeGroup from being defined inline to being defined "out-of-line" in ExplodedGraph.cpp. This removes a dependence on including <vector> in ExplodedGraph.h, and will hopefully result in smaller generated code with negligible performance impact. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45928 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11Added ProgramPoint.cpp, which implements several methods of the subclassesTed Kremenek
of ProgramPoint. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45866 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-11Renamed ProgramEdge to ProgramPoint and changed subclasses of ProgramEdgeTed Kremenek
to have a much simpler, cleaner interpretation of what is a "location" in a function (as encoded by a CFG). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45846 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-09Removed some files related to the path-sensitive solver as part of someTed Kremenek
code restructuring. (new files will be introduced shortly) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45785 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08Added VISIBILITY_HIDDEN to classes/structs in anonymous namespaces.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45750 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-08Relocated comment in header.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45728 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07Added more boilerplate for processing end-of-paths.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45724 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07Added ownership of "checker state" within the ExplodedGraph. Moved code thatTed Kremenek
creates the initial root node from the constructor of ReachabilityEngine to ReachabilityEngine::ExecuteWorklist. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45722 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07Renamed SimulVertex, SimulGraph, and SimulEngine to: Ted Kremenek
ExplodedNode, ExplodedGraph (to match the vocabulary in the RHS paper) ReachabilityEngine The implementation of the core of the path-sensitive dataflow solver has been de-templatized and places in ReachabilityEngine.cpp. The solver is still incomplete. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45711 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03renamed class "GRCP" (Graph Reachabilty Constant Propagation) toTed Kremenek
"GREngine" (Graph Reachability Engine). The idea is to provide a separation of concerns between the constant prop. details and the core analysis engine. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45555 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03Implemented End-Of-Path processing.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45554 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-03Initial checking of GRConstantPropagation.cpp, which implements a constantTed Kremenek
propagation analysis via graph reachability. This analysis (which is incomplete) will be the basis for later developments on the core engine for path-sensitive analysis analysis. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45552 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29remove attribution from makefiles.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45412 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29Don't attribute in file headers anymore. See llvmdev for theChris Lattner
discussion of this change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45410 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-21Directory restructing of Analysis files.Ted Kremenek
Created include/clang/Analysis/Analyses directory. - Moved LiveVariables.h and UninitializedValues.h into this dir. Moved ExprDeclBitVector.h into Analysis/Support. Updated all clients who use these headers to reflect the new paths. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45292 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-13For uninitialized values analysis, added special treatment for declarationsTed Kremenek
of array types. For things like: char x[10]; we should treat "x" as being initialized, because the variable "x" really refers to the memory block of the array. Clearly x[1] is uninitialized, but expressions like "(char*) x" really do refer to an initialized value. This simple dataflow analysis does not reason about the contents of arrays. This fixes: PR 1859 (http://llvm.org/bugs/show_bug.cgi?id=1859) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44984 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-13Fixed bug in live-variable analysis and uninitialized-values analysis whereTed Kremenek
we incorrectly examine the expression within a sizeof() for use in computing dataflow values. This fixes: PR 1858 (http://llvm.org/bugs/show_bug.cgi?id=1858) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44982 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-12TargetInfo no longer includes a reference to SourceManager.Ted Kremenek
Moved all clients of Diagnostics to use FullSourceLoc instead of SourceLocation. Added many utility methods to FullSourceLoc to provide shorthand for: FullLoc.getManager().someMethod(FullLoc.getLocation()); instead we have: FullLoc.someMethod(); Modified TextDiagnostics (and related classes) to use this short-hand. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44957 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-11Mega-patch: ripped SourceManager out of Diagnostic/DiagnosticClient. NowTed Kremenek
SourceManager is passed by reference, allowing the SourceManager to be associated with a specific translation unit, and not the entire execution of the driver. Modified all users of Diagnostics to comply with this new interface. Integrated SourceManager as a member variable of TargetInfo. TargetInfo will eventually be associated with a single translation unit (just like SourceManager). Made the SourceManager reference in ASTContext private. Provided accessor getSourceManager() for clients to use instead. Modified clients to comply with new interface. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44878 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-30GCC has an extension where the left hand side of the ? : operator can be ↵Anders Carlsson
omitted. Handle this in a few more places. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44462 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-24Fixed bogus culling of uninitialized-values "taint" propagation during ↵Ted Kremenek
assignments. We accidentally were throttling the propagation of uninitialized state across assignments (e.g. x = y). Thanks to Anders Carlsson for spotting this problem. Added test cases to test suite to provide regression testing for the uninitialized values analysis. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44306 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-20Updated CFGStmtVisitor and CFGRecStmtVisitor to have a notion ofTed Kremenek
"block-expressions" when visiting arbitrary expressions (via calls to "Visit()"). This results in a refactoring where a dataflow analysis no longer needs to always special case when handling block-expressions versus non-block expressions. Updated LiveVariables and UninitializedValues to conform to the slightly altered interface of these visitor classes. Thanks to Nuno Lopes for providing a test case that illustrated some fundamental problems in the current design of the CFGXXXStmtVisitor classes and how they were used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44246 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-19Fixed bug where LiveVariables was not properly propagating updates to livenessTed Kremenek
state that occurred in subexpressions of Block-Level expressions. Bug and fix provided by Nuno Lopes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44224 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-16Add a new Rewriter::getRangeSize method.Chris Lattner
Rename SourceRange::Begin()/End() to getBegin()/getEnd() for consistency with other code. Start building the rewriter towards handling @encode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43047 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-07move IdentifierTable.h from liblex to libbasic.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42730 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-01Migrated LiveVariables and UninitializedVariables to now use theTed Kremenek
tracked BlkExpr information now maintained by the CFG class. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42498 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-28Fixed bug where assignments to variables wrapped in parentheses would notTed Kremenek
properly kill variables. e.g: (x) = 1; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42450 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-28Fixed UninitializedValues to properly propagate uninitialized "taint"Ted Kremenek
in assignment operations of the form +=, -=, *=, etc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42449 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-28DeadStores no longer reports warnings for stores to non-local variables.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42447 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-28Significant cleanups and bug-fixes to LiveVariables. Uses new refactoredTed Kremenek
ExprDeclBitVector class for defining dataflow state. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42446 91177308-0d34-0410-b5e6-96231b3b80d8