- Jan 17, 2008
-
-
Ted Kremenek authored
is because GNU-style Statement-expressions cause the last statement in the statement-expression to act like an expression. We now have two notions: block-level statements and block-level expressions. The former are all Stmt* that appear in the list of statements in CFGBlocks. The latter is the subset of the former; these block-level statements are used as subexpressions somewhere in the AST. CFG::isBlockExpr() returns true for the latter, not the former (previously isBlockExpr() always returned true for non-Expr Stmt*). Modified the LiveVariables analysis to also track liveness state for block-level expressions (using the updated definition of block-level expressions). Modified the dataflow solver so that when it records values for block-level statements, it records the dataflow value *before* the transfer function for a Stmt* is evaluated (not after). This is more in sync in what clients will want. Modified CFGStmtVisitor to record the current block-level statement. llvm-svn: 46143
-
Ted Kremenek authored
values for the block-level expressions. Modified 'LiveVariables' to provide the option to clients to record liveness information for block-level expressions (using the above feature). Modified 'DeadStores' to conform to the new interface of 'LiveVariables'. Modified 'GRConstants' to compute liveness information for block-level expressions. llvm-svn: 46137
-
Ted Kremenek authored
llvm-svn: 46133
-
Ted Kremenek authored
Refactored the use of this method into both the Sema module and Analysis module, which were using their own static functions that did the same thing. llvm-svn: 46129
-
Ted Kremenek authored
state. llvm-svn: 46106
-
Ted Kremenek authored
map. This will allow us to quickly prune them from maps without searching the entire map. llvm-svn: 46101
-
Ted Kremenek authored
to sort sub-expressions before Block-level expressions. llvm-svn: 46100
-
- Jan 16, 2008
-
-
Ted Kremenek authored
values are determined when evaluating the parent expression. llvm-svn: 46096
-
Ted Kremenek authored
constant propagation. llvm-svn: 46095
-
Ted Kremenek authored
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. llvm-svn: 46093
-
Ted Kremenek authored
llvm-svn: 46092
-
Ted Kremenek authored
llvm-svn: 46087
-
Ted Kremenek authored
llvm-svn: 46086
-
Ted Kremenek authored
that were "not a constant." llvm-svn: 46085
-
Ted Kremenek authored
call the dstor instead of using delete. llvm-svn: 46084
-
Ted Kremenek authored
Fixed some compilation errors with GREngine that showed up during template instantiation. llvm-svn: 46074
-
Ted Kremenek authored
node caching in GREngine will guarantee that we do not insert a node twice into a nodeset. llvm-svn: 46071
-
Ted Kremenek authored
llvm-svn: 46051
-
Ted Kremenek authored
variant type, and not just the pointer value. llvm-svn: 46049
-
Ted Kremenek authored
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. llvm-svn: 46040
-
Ted Kremenek authored
the graph reachability engine. llvm-svn: 46036
-
- Jan 15, 2008
-
-
Ted Kremenek authored
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). llvm-svn: 45991
-
Ted Kremenek authored
llvm-svn: 45986
-
- Jan 13, 2008
-
-
Ted Kremenek authored
parent class ExplodedGraphImpl. llvm-svn: 45930
-
Ted Kremenek authored
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. llvm-svn: 45928
-
- Jan 11, 2008
-
-
Ted Kremenek authored
of ProgramPoint. llvm-svn: 45866
-
Ted Kremenek authored
to have a much simpler, cleaner interpretation of what is a "location" in a function (as encoded by a CFG). llvm-svn: 45846
-
- Jan 09, 2008
-
-
Ted Kremenek authored
code restructuring. (new files will be introduced shortly) llvm-svn: 45785
-
- Jan 08, 2008
-
-
Ted Kremenek authored
llvm-svn: 45750
-
Ted Kremenek authored
llvm-svn: 45728
-
- Jan 07, 2008
-
-
Ted Kremenek authored
llvm-svn: 45724
-
Ted Kremenek authored
creates the initial root node from the constructor of ReachabilityEngine to ReachabilityEngine::ExecuteWorklist. llvm-svn: 45722
-
Ted Kremenek authored
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. llvm-svn: 45711
-
- Jan 03, 2008
-
-
Ted Kremenek authored
"GREngine" (Graph Reachability Engine). The idea is to provide a separation of concerns between the constant prop. details and the core analysis engine. llvm-svn: 45555
-
Ted Kremenek authored
llvm-svn: 45554
-
Ted Kremenek authored
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. llvm-svn: 45552
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45412
-
Chris Lattner authored
discussion of this change. llvm-svn: 45410
-
- Dec 21, 2007
-
-
Ted Kremenek authored
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. llvm-svn: 45292
-
- Dec 13, 2007
-
-
Ted Kremenek authored
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) llvm-svn: 44984
-