| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
state.
llvm-svn: 46106
|
|
|
|
|
|
|
| |
map. This will allow us to quickly prune them from maps without searching the
entire map.
llvm-svn: 46101
|
|
|
|
|
|
| |
to sort sub-expressions before Block-level expressions.
llvm-svn: 46100
|
|
|
|
|
|
| |
values are determined when evaluating the parent expression.
llvm-svn: 46096
|
|
|
|
|
|
| |
constant propagation.
llvm-svn: 46095
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 46092
|
|
|
|
| |
llvm-svn: 46087
|
|
|
|
| |
llvm-svn: 46086
|
|
|
|
|
|
| |
that were "not a constant."
llvm-svn: 46085
|
|
|
|
|
|
| |
call the dstor instead of using delete.
llvm-svn: 46084
|
|
|
|
|
|
|
| |
Fixed some compilation errors with GREngine that showed up during
template instantiation.
llvm-svn: 46074
|
|
|
|
|
|
|
| |
node caching in GREngine will guarantee that we do not insert a node twice into
a nodeset.
llvm-svn: 46071
|
|
|
|
| |
llvm-svn: 46051
|
|
|
|
|
|
| |
variant type, and not just the pointer value.
llvm-svn: 46049
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
the graph reachability engine.
llvm-svn: 46036
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 45986
|
|
|
|
|
|
| |
parent class ExplodedGraphImpl.
llvm-svn: 45930
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
of ProgramPoint.
llvm-svn: 45866
|
|
|
|
|
|
|
| |
to have a much simpler, cleaner interpretation of what is a "location"
in a function (as encoded by a CFG).
llvm-svn: 45846
|
|
|
|
|
|
| |
code restructuring. (new files will be introduced shortly)
llvm-svn: 45785
|
|
|
|
| |
llvm-svn: 45750
|
|
|
|
| |
llvm-svn: 45728
|
|
|
|
| |
llvm-svn: 45724
|
|
|
|
|
|
|
| |
creates the initial root node from the constructor of ReachabilityEngine to
ReachabilityEngine::ExecuteWorklist.
llvm-svn: 45722
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
"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
|
|
|
|
| |
llvm-svn: 45554
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 45412
|
|
|
|
|
|
| |
discussion of this change.
llvm-svn: 45410
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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)
llvm-svn: 44982
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 44957
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 44878
|
|
|
|
|
|
| |
omitted. Handle this in a few more places.
llvm-svn: 44462
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 44306
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"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.
llvm-svn: 44246
|
|
|
|
|
|
|
| |
state that occurred in subexpressions of Block-Level expressions. Bug and fix
provided by Nuno Lopes.
llvm-svn: 44224
|
|
|
|
|
|
|
|
| |
Rename SourceRange::Begin()/End() to getBegin()/getEnd() for
consistency with other code.
Start building the rewriter towards handling @encode.
llvm-svn: 43047
|
|
|
|
| |
llvm-svn: 42730
|
|
|
|
|
|
| |
tracked BlkExpr information now maintained by the CFG class.
llvm-svn: 42498
|
|
|
|
|
|
|
|
| |
properly kill variables. e.g:
(x) = 1;
llvm-svn: 42450
|
|
|
|
|
|
| |
in assignment operations of the form +=, -=, *=, etc.
llvm-svn: 42449
|
|
|
|
| |
llvm-svn: 42447
|
|
|
|
|
|
| |
ExprDeclBitVector class for defining dataflow state.
llvm-svn: 42446
|