- Oct 23, 2008
-
-
Zhongxing Xu authored
llvm-svn: 58030
-
Zhongxing Xu authored
llvm-svn: 58028
-
- Oct 22, 2008
-
-
Zhongxing Xu authored
llvm-svn: 57964
-
Zhongxing Xu authored
llvm-svn: 57963
-
- Oct 21, 2008
-
-
Ted Kremenek authored
When conjuring symbols for compound assignments, use the promoted type to determine if the symbolic value as a "loc::" or "nonloc::" value. llvm-svn: 57917
-
Douglas Gregor authored
llvm-svn: 57909
-
Zhongxing Xu authored
GRExprEngine::VisitCast() so that other parts of the analyzer can be ignorant. When we cast "array of type T" to "pointer to T", we get the loc::MemRegionVal corresponding to the array variable. This is sufficient for BasicStore, but not for RegionStore. RegionStore should get the element region for the first array element in the cast. So next comes to the revamping of transfer functions for different store model. llvm-svn: 57897
-
Ted Kremenek authored
Further improve path-sensitivity with divide-by-zero checking by assuming that a denominator cannot be zero even when the result of an '/' or '%' expression is unknown. llvm-svn: 57855
-
Ted Kremenek authored
Used conjured symbols to recover path-sensitivity when the result of a compound assignment is UnknownVal(). llvm-svn: 57851
-
- Oct 19, 2008
-
-
Ted Kremenek authored
llvm-svn: 57777
-
- Oct 18, 2008
-
-
Ted Kremenek authored
Generalize VisitLValue: not only can CallExprs and ObjCMessageExprs return aggregate temporaries, so can many other expressions. llvm-svn: 57761
-
Ted Kremenek authored
Function calls and ObjC message expressions can be used in a lvalue context if they return a structure. E.g foo().x == 1. We don't really support, however, such temporaries yet in the environment or the store. llvm-svn: 57760
-
Ted Kremenek authored
Use "VisitLValue" when processing the base for "x.f" field accesses, and "Visit" when processing the base for "x->f" field accesses. llvm-svn: 57754
-
Ted Kremenek authored
When conjuring symbols to recover path-sensitivity, don't conjure symbols that represent an entire struct. We need to implement struct temporaries as an actual "region", and then bind symbols to the FieldRegion of those temporaries. llvm-svn: 57739
-
- Oct 17, 2008
-
-
Ted Kremenek authored
"Implement" GRExprEngine::VisitLValue for ObjCPropertyRefExpr. This is only a bandid; we need to properly handle properties by using locv/nonloc objects and specially handling property assignments in the transfer function for BinaryOperator. llvm-svn: 57693
-
Zhongxing Xu authored
RVal => SVal LVal => Loc NonLVal => NonLoc lval => loc nonlval => nonloc llvm-svn: 57671
-
Zhongxing Xu authored
llvm-svn: 57666
-
Zhongxing Xu authored
type T. llvm-svn: 57665
-
Ted Kremenek authored
llvm-svn: 57659
-
Ted Kremenek authored
Remove GRExprEngine::getLVal and RValues::MakeVal. Enhance StoreManager "GetLValue" methods to dispatch for specific kinds of lvalue queries, as opposed to interogating the expression tree (GRExprEngine already does this). Added FIXMEs. In particular, we no longer "assume" that a base pointer in a field/array access is null (this logic was removed). Perhaps we should do this when fetching the lvalue for fields and array elements? llvm-svn: 57657
-
Ted Kremenek authored
llvm-svn: 57654
-
- Oct 16, 2008
-
-
Zhongxing Xu authored
new VisitLValue method is added to replace the old VisitLVal. The semantics model becomes more explicit to separate rvalue evaluation from lvalue evaluation. llvm-svn: 57627
-
- Oct 09, 2008
-
-
Zhongxing Xu authored
llvm-svn: 57317
-
- Oct 07, 2008
-
-
Zhongxing Xu authored
llvm-svn: 57240
-
- Oct 06, 2008
-
-
Ted Kremenek authored
Don't use DeclStmt::getDecl(); this will eventually disappear. Just fetch the first decl using the DeclStmt::decl_iterator. llvm-svn: 57194
-
- Oct 04, 2008
-
-
Ted Kremenek authored
This is a big patch, but the functionality change is small and the rest of the patch consists of deltas due to API changes. This patch overhauls the "memory region" abstraction that was prototyped (but never really used) as part of the Store.h. This patch adds MemRegion.h and MemRegion.cpp, which defines the class MemRegion and its subclasses. This classes serve to define an abstract representation of memory, with regions being layered on other regions to to capture the relationships between fields and variables, variables and the address space they are allocated in, and so on. The main motivation of this patch is that key parts of the analyzer assumed that all value bindings were to VarDecls. In the future this won't be the case, and this patch removes lval::DeclVal and replaces it with lval::MemRegionVal. Now all pieces of the analyzer must reason about abstract memory blocks instead of just variables. There should be no functionality change from this patch, but it opens the door for significant improvements to the analyzer such as field-sensitivity and object-sensitivity, both which were on hold until the memory abstraction got generalized. The memory region abstraction also allows type-information to literally be affixed to a memory region. This will allow the some now redundant logic to be removed from the retain/release checker. llvm-svn: 57042
-
- Oct 01, 2008
-
-
Ted Kremenek authored
Use this updated interface when invalidating arguments passed by reference; the type of symbol is of the object passed by reference, not the reference itself. llvm-svn: 56894
-
- Sep 30, 2008
-
-
Ted Kremenek authored
llvm-svn: 56832
-
Ted Kremenek authored
from the subexpression type to the expression type. llvm-svn: 56831
-
- Sep 20, 2008
-
-
Ted Kremenek authored
GRExprEngine: Use PostStore in EvalStore. Use a second version of EvalStore in EvalBinaryOperator to associate the store with the expression on the LHS. llvm-svn: 56383
-
- Sep 19, 2008
-
-
Ted Kremenek authored
Bug fix: for the base transfer function logic for casts, handle const casts as just propagating the value. llvm-svn: 56368
-
Ted Kremenek authored
llvm-svn: 56327
-
Ted Kremenek authored
Implement second part of PR 2600: NSError** parameter may be null, and should be checked before being dereferenced. llvm-svn: 56318
-
- Sep 16, 2008
-
-
Ted Kremenek authored
motivated because it became clear that the number of subclasses of ProgramPoint would expand and we ran out of bits to represent a pointer variant. As a plus of this change, BlockEdge program points can now be represented explicitly without using a cache of CFGBlock* pairs in CFG. llvm-svn: 56245
-
- Sep 13, 2008
-
-
Ted Kremenek authored
"Here is a patch what replaces std::ostream with llvm::raw_ostream. This patch covers the AST library, but ignores Analysis lib." llvm-svn: 56185
-
- Aug 29, 2008
-
-
Ted Kremenek authored
llvm-svn: 55519
-
Ted Kremenek authored
Their precise semantics will be implemented by a specific StoreManager. Use function pointer to create the StoreManager in GRStateManager. This matches how we create ConstraintsManager. llvm-svn: 55514
-
- Aug 28, 2008
-
-
Ted Kremenek authored
llvm-svn: 55494
-
Ted Kremenek authored
llvm-svn: 55487
-
- Aug 27, 2008
-
-
Zhongxing Xu authored
llvm-svn: 55412
-