summaryrefslogtreecommitdiffstats
path: root/clang/Analysis/ValueState.h
Commit message (Collapse)AuthorAgeFilesLines
* Header file cleanups: reduce number of includes; move ValueState.h into ↵Ted Kremenek2008-02-271-277/+0
| | | | | | include directory tree. llvm-svn: 47661
* Fix bug when processing '?' operator: invalidate the old "Uninitialized" ↵Ted Kremenek2008-02-261-1/+3
| | | | | | value of the block-level expression for ?. llvm-svn: 47645
* Major cleanup of the transfer function logic for '&&', '||', and '?'. WeTed Kremenek2008-02-261-7/+9
| | | | | | | | 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. llvm-svn: 47613
* Major cleanup of path-sensitive analysis engine and the current analysisTed Kremenek2008-02-211-44/+39
| | | | | | | | | | | | | | | | 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. llvm-svn: 47441
* Added "symbol iterators" for RValues, allowing easy iteration over the symbolsTed Kremenek2008-02-141-0/+8
| | | | | | | | referenced by an RValue, instead of having to query the type of the RValue. Modified ValueState::RemoveDeadBindings to also prune dead symbols. llvm-svn: 47142
* Moved Rvalues.h from "Analysis/" to "include/clang/Analysis/PathSensitive".Ted Kremenek2008-02-141-2/+1
| | | | llvm-svn: 47123
* Renamed class GREngine => GRCoreEngine.Ted Kremenek2008-02-131-2/+2
| | | | | | | | | Renamed class GRConstants => GRExprEngine. This was done with a Perl script, and will result in 80 col. violations that I will gradually fix up. llvm-svn: 47070
* Consolidated use of BumpPtrAllocator shared by various ImmutableSet/ImmutableMapTed Kremenek2008-02-111-1/+6
| | | | | | | | | factories. Fixed a horrible bug in lval:DeclVar::classof(RValue* V); we weren't checking V was an LValue, allowing nonlval::ConcereteInts to match isa<lval::DeclVar>. llvm-svn: 46976
* Separate bindings for subexpressions to be in a separate map forTed Kremenek2008-02-111-74/+68
| | | | | | | | bindings for block-level expressions. Moved pretty-printing logic (DOT) for ValueStates to ValueState.cpp. llvm-svn: 46965
* Split off expression-bindings in ValueState from variable-bindings.Ted Kremenek2008-02-081-62/+31
| | | | llvm-svn: 46892
* Changed "GetValue" methods to take anTed Kremenek2008-02-081-26/+30
| | | | | | | Expr* instead of a Stmt*, since we only store bindings for Expr*. llvm-svn: 46891
* Moved implementation of "RemoveDeadBindings" from the mainTed Kremenek2008-02-081-2/+7
| | | | | | GRConstants logic to ValueStateManager. llvm-svn: 46888
* Removed ability to create symbol bindingsTed Kremenek2008-02-081-21/+2
| | | | | | in VarKey and VariableBindingsTy. llvm-svn: 46887
* More variable renamings.Ted Kremenek2008-02-081-11/+11
| | | | llvm-svn: 46875
* Added recording of "implicit" NULL dereferences of symbolic pointers.Ted Kremenek2008-02-071-1/+1
| | | | llvm-svn: 46843
* Disabled operator= for ValueStateImpl.Ted Kremenek2008-02-061-4/+9
| | | | | | | ValueState no longer inherits FoldingSetNode (not needed). Removed redundant operator= implementation for ValueState (it simply did the default behavior). llvm-svn: 46794
* Added some skeleton code for performing "assume" on symbols: e.g. assume($0 ↵Ted Kremenek2008-02-061-5/+25
| | | | | | | | | != 0). This action will add constraints to the possible values of a symbol. Still needs to be debugged. llvm-svn: 46789
* Added "batch" processing versions of Nodify and SetValue. Created typedefsTed Kremenek2008-02-051-7/+5
| | | | | | for buffers for RValues and States. llvm-svn: 46759
* Added a "ConstantNotEq" map to ValueState (and added necessary typedefs and ↵Ted Kremenek2008-02-051-9/+28
| | | | | | factory objects to ValueStateManager). llvm-svn: 46758
* Added some comments.Ted Kremenek2008-02-051-2/+14
| | | | llvm-svn: 46756
* Renamed typedef "iterator" in ValueState to "vb_iterator" (for ↵Ted Kremenek2008-02-051-3/+3
| | | | | | "VariableBindings"). llvm-svn: 46755
* Reordered fields/methods in ValueState to make it more aesthetically pleasing.Ted Kremenek2008-02-051-11/+12
| | | | llvm-svn: 46754
* Overhauling of "ValueState" so that it represents its own functional dataTed Kremenek2008-02-051-38/+96
| | | | | | structure that can contain several maps, not just one. llvm-svn: 46744
* ValueManager now uses the BumpPtrAllocator owned by the ExplodedGraph.Ted Kremenek2008-02-051-1/+2
| | | | llvm-svn: 46740
* Implemented initial transfer function support for '&&', '||', '?', andTed Kremenek2008-02-051-1/+2
| | | | | | __builtin_choose. llvm-svn: 46731
* Created ValueStateManager, a full-blown class to manage the statesTed Kremenek2008-02-041-0/+36
| | | | | | | | created for GRConstants. Moved instances of ValueManager and SymbolManager inside this class. The goal is to gradually separate more of the state management from the state transformation. llvm-svn: 46721
* Moved RValue code in GRConstants.cpp to RValue.[h,cpp].Ted Kremenek2008-01-311-0/+162
Moved ValueKey/ValueMap declaration to ValueState.h. llvm-svn: 46618
OpenPOWER on IntegriCloud