Ted Kremenek
8e6f6e05c3
Added "symbol iterators" for RValues, allowing easy iteration over the symbols
...
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
2008-02-14 23:25:54 +00:00
Ted Kremenek
736e441266
Added transfer function/value track logic for taking the address of a label.
...
llvm-svn: 47030
2008-02-12 21:37:56 +00:00
Ted Kremenek
fb9cc188af
Renamed local variable.
...
Added transfer function support for CharacterLiteral.
llvm-svn: 47014
2008-02-12 18:50:32 +00:00
Ted Kremenek
633654ffab
Consolidated use of BumpPtrAllocator shared by various ImmutableSet/ImmutableMap
...
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
2008-02-11 23:12:59 +00:00
Ted Kremenek
ed3be17b6f
Separate bindings for subexpressions to be in a separate map for
...
bindings for block-level expressions.
Moved pretty-printing logic (DOT) for ValueStates to ValueState.cpp.
llvm-svn: 46965
2008-02-11 19:21:59 +00:00
Ted Kremenek
b54312d5a0
Split off expression-bindings in ValueState from variable-bindings.
...
llvm-svn: 46892
2008-02-08 21:10:02 +00:00
Ted Kremenek
4142cc834b
Changed "GetValue" methods to take an
...
Expr* instead of a Stmt*, since we only
store bindings for Expr*.
llvm-svn: 46891
2008-02-08 20:29:23 +00:00
Ted Kremenek
80ff44ff30
Moved implementation of "RemoveDeadBindings" from the main
...
GRConstants logic to ValueStateManager.
llvm-svn: 46888
2008-02-08 19:17:19 +00:00
Ted Kremenek
fd641f1056
More variable renamings.
...
llvm-svn: 46875
2008-02-08 03:02:48 +00:00
Ted Kremenek
173743da67
Renamed InvalidValue to UnknownVal.
...
Renamed UninitializedValue to UninitializedVal.
llvm-svn: 46874
2008-02-08 02:57:34 +00:00
Ted Kremenek
e324704e62
Added recording of "implicit" NULL dereferences of symbolic pointers.
...
llvm-svn: 46843
2008-02-07 05:48:01 +00:00
Ted Kremenek
88da1de048
Added several guards in transfer functions for "InvalidValues".
...
Fixed bug in RemoveDeadBindings by implementing a simple "mark-and-sweep"
cleaner over the bindings, starting from the Decls and block-level expressions
that are considered "live" by the Liveness analysis.
Fixed bug in isa<> implementation for class LValue.
Added "VisitDeclRefExpr" to GRConstants so that we explicitly bind the current
value of variable to the Block-level Expression (i.e., when the DeclRefExpr is
at the CFGBlock level).
llvm-svn: 46839
2008-02-07 04:16:04 +00:00
Ted Kremenek
43523e0fe8
Added transfer function logic for ReturnStmts.
...
Fixed insidious bug in handling dereferences.
llvm-svn: 46835
2008-02-07 01:08:27 +00:00
Ted Kremenek
4ff4e7ce9f
Fixed bug when allocating a ValueStateImpl object in getPersistentState()
...
using the bump-pointer allocator and a placed new; we accidentally allocated
a ValueStateImpl* instead, causing an overrun when we did a placed new().
llvm-svn: 46793
2008-02-06 02:45:20 +00:00
Ted Kremenek
03e7b55f22
Added some skeleton code for performing "assume" on symbols: e.g. assume($0 != 0).
...
This action will add constraints to the possible values of a symbol.
Still needs to be debugged.
llvm-svn: 46789
2008-02-06 00:54:14 +00:00
Ted Kremenek
1e3fa134de
Moved subclasses of LValue and NonLValue into their own namespaces.
...
This noticeably cleans up the naming of these classes.
llvm-svn: 46770
2008-02-05 21:52:21 +00:00
Ted Kremenek
1cc95f6cd3
Added a "ConstantNotEq" map to ValueState (and added necessary typedefs and factory objects to ValueStateManager).
...
llvm-svn: 46758
2008-02-05 18:51:06 +00:00
Ted Kremenek
d8902e06ba
Overhauling of "ValueState" so that it represents its own functional data
...
structure that can contain several maps, not just one.
llvm-svn: 46744
2008-02-05 07:17:49 +00:00
Ted Kremenek
3f2f1ade4c
Implemented initial transfer function support for '&&', '||', '?', and
...
__builtin_choose.
llvm-svn: 46731
2008-02-05 00:26:40 +00:00
Ted Kremenek
7746a6279b
Added file that should have been in my previous commit.
...
llvm-svn: 46722
2008-02-04 21:59:22 +00:00