summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/GRState.cpp
Commit message (Collapse)AuthorAgeFilesLines
* GRStateRef:Ted Kremenek2008-11-121-7/+2
| | | | | | | | | | | | - Rename SetSVal to BindLoc - Add BindDecl - Add BindExpr GRState: - Environment now binds to Stmt* instead of Expr*. This is needed for processing ObjCForCollectionStmt (essentially the declaration of the the 'element' variable can have an SVal attached to it). - BindDecl no longer accepts Expr* for the initialization value; use SVal* instead. llvm-svn: 59152
* Finish the implementation of VisitCompoundLiteralExpr. As VisitInitListExpr is Zhongxing Xu2008-11-071-3/+2
| | | | | | | | | available, things get much simplified. One addition is that CompoundLiteralExpr can appear both in rvalue and lvalue context. llvm-svn: 58837
* Fix 80-col violations.Zhongxing Xu2008-11-031-2/+2
| | | | llvm-svn: 58596
* Rename:Zhongxing Xu2008-10-301-2/+1
| | | | | | | - SetSVal(GRState*, Loc, SVal) => BindLoc - SetSVal(GRState*, Expr*, SVal) => BindExpr llvm-svn: 58421
* Rename: AddDecl => BindDeclZhongxing Xu2008-10-291-5/+4
| | | | | | | | BindDecl better describes what the function does: - Bind the VarDecl to its memory region - Bind the memory region to some initial value. llvm-svn: 58359
* Added preliminary support for CompoundLiterals in the static analyzer:Ted Kremenek2008-10-271-0/+20
| | | | | | | | | | | | | | | | | | | | - GRExprEngine::VisitCompoundLiteral... (1) visits the initializer list (generating ExplodedNodes) (2) creates a CompoundMemRegion for the literal (3) creates a new state with the bound literal values using GRStateManager::BindCompoundLiteral - GRStateManager::BindCompoundLiteral simply calls StoreManager::BindCompoundLiteral to get a new store and returns a persistent GRState with that store. - BasicStore::BindCompoundLiteral simply returns the same store, as it doesn't handle field sensitivity - RegionStore::BindCompoundLiteral currently fires an assert (pending discussion of how to best implement mappings for CompoundLiteralRegion). llvm-svn: 58277
* Modify Store interface: GetSVal/SetSVal => Retrieve/Bind.Zhongxing Xu2008-10-211-1/+1
| | | | llvm-svn: 57896
* This patch did the following renaming. There should be no functional changes.Zhongxing Xu2008-10-171-10/+10
| | | | | | | | | | RVal => SVal LVal => Loc NonLVal => NonLoc lval => loc nonlval => nonloc llvm-svn: 57671
* This is the first step to build a better evaluation model for GRExprEngine. AZhongxing Xu2008-10-161-7/+7
| | | | | | | | 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
* Remove redundant parameter and rename StMgr to StateMgr.Zhongxing Xu2008-10-051-3/+3
| | | | llvm-svn: 57107
* This is a big patch, but the functionality change is small and the rest of ↵Ted Kremenek2008-10-041-7/+6
| | | | | | | | | | | | | | 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
* Implement second part of PR 2600: NSError** parameter may be null, and ↵Ted Kremenek2008-09-181-0/+6
| | | | | | should be checked before being dereferenced. llvm-svn: 56318
* Patch by Csaba Hruska!Ted Kremenek2008-09-131-2/+6
| | | | | | | "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
* Migrate the rest symbolic analysis stuff to BasicConstraintManager.Zhongxing Xu2008-08-291-137/+7
| | | | llvm-svn: 55536
* Make the destructor of ConstraintManager virtual.Ted Kremenek2008-08-271-1/+5
| | | | llvm-svn: 55448
* Refactor Assume logic into a separate class ConstraintManager.Zhongxing Xu2008-08-271-238/+0
| | | | llvm-svn: 55412
* adjust to changes in various APIs from LLVM. We can't printChris Lattner2008-08-231-4/+6
| | | | | | | | an APInt directly to an ostream now, so add some hacks. It would be better to switch all of the bugreport (and friends) stuff over to raw_ostream. llvm-svn: 55264
* Simplify interface to Store::AddDeclTed Kremenek2008-08-231-2/+3
| | | | llvm-svn: 55213
* Move the handling of DeclStmt from GRExprEngine to BasicStoreManager.Zhongxing Xu2008-08-211-0/+18
| | | | llvm-svn: 55144
* Patch by Zhongxing Xu:Ted Kremenek2008-08-201-34/+2
| | | | | | This patch moves some code in GRStateManager::RemoveDeadBindings() to EnvironmentManager::RemoveDeadBindings(). llvm-svn: 55064
* Patch by Zhongxing Xu: We should set back the modified ConstEq map.Ted Kremenek2008-08-201-1/+2
| | | | llvm-svn: 55060
* Move store pretty-printing logic inside of StoreManager (previously in GRState).Ted Kremenek2008-08-191-18/+6
| | | | llvm-svn: 55013
* Patch by Zhongxing Xu!Ted Kremenek2008-08-191-2/+3
| | | | | | | This patch extends BasicStoreManager::getInitialStore() to include code that symbolicates input variables. It also removes redundant handling of ImplicitParamDecl, since it is a subclass of VarDecl. llvm-svn: 54993
* various updates to match r54873 on mainline.Chris Lattner2008-08-171-2/+2
| | | | llvm-svn: 54874
* Migrate GRState::ConstEqTy (map used from tracking constants for symbols) to ↵Ted Kremenek2008-08-171-27/+26
| | | | | | use the generic data map instead. llvm-svn: 54860
* Added GRStateTrait.h, which includes boilerplate code for creating ↵Ted Kremenek2008-08-171-38/+4
| | | | | | | | specializations of GRStateTrait<>. Modified GRStateTrait<ConstNotEq> in GRState to use the boilerplate in GRStateTrait<> for ImmutableMaps. llvm-svn: 54859
* GRState:Ted Kremenek2008-08-161-34/+120
| | | | | | | | | | | | | | - Remove ConstNotEq from GRState/GRStateManager (!= tracking uses GDM instead). - GRStateManager now can book-keep "contexts" (e.g., factory objects) for uses with data elements stored into the GDM. - Refactor pretty-printing of states to use GRState::Printer objects exclusively. This removed a huge amount of pretty-printing logic from GRExprEngine. CFRefCount - Simplified some API calls based on refinements to the GDM api. llvm-svn: 54835
* Migrated retain/release checker to use the Generic Data Map in GRState (insteadTed Kremenek2008-08-141-5/+22
| | | | | | | | | | | | | | of using CheckerState). Removed CheckerState from GRState. Added class GRStateRef which wraps GRState* and GRStateManager*. This is handy for generating new states with a single handle. Added member template set/get functions to GRStateRef/GRState/GRStateManager for accessing the Generic Data Map. llvm-svn: 54788
* Renamed GRState::CheckerStatePrinter to GRState::Printer.Ted Kremenek2008-08-131-10/+11
| | | | | | Updated checker state printer interface to allow transfer functions to return an arbitrary number of GRState::Printers. llvm-svn: 54762
* Rename ValueState.h -> GRState.hTed Kremenek2008-08-131-0/+575
Rename ValueState.cpp -> GRState.cpp llvm-svn: 54722
OpenPOWER on IntegriCloud