summaryrefslogtreecommitdiffstats
path: root/clang/lib/Checker/RegionStore.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Change RegionStoreManager::Retrieve to infer the type of a symbolic region ↵Tom Care2010-06-251-1/+6
| | | | | | from the context when it is not already available. llvm-svn: 106868
* Correctly construct an ElementRegion for alloca() + pointer arithmetic. ↵Ted Kremenek2010-06-221-2/+1
| | | | | | | | Fixes analyzer crash reported in PR 7450. llvm-svn: 106609
* Implement RegionStoreManager::iterBindings(). This implementation only ↵Ted Kremenek2010-06-171-6/+11
| | | | | | | | | | returns the base region in the binding key instead of the region + offset. It isn't clear if this is the best semantics, but most clients will likely only care about simple bindings, or bindings to a particular variable. We can refine later if necessary. llvm-svn: 106183
* Limit the use of BindDefault().Zhongxing Xu2010-06-011-1/+5
| | | | llvm-svn: 105265
* Add support for calloc() in MallocChecker. Patch by Jordy Rose, with my Zhongxing Xu2010-06-011-1/+6
| | | | | | modification. llvm-svn: 105264
* After conversations with Zhongxing Xu and Jordy Rose, refine the logic inTed Kremenek2010-05-311-19/+25
| | | | | | | | | RegionStoreManager::RetrieveElement() that handles indexing into a larger scalar object to only consult the direct binding of a super region if it is a scalar. This isn't perfect yet, and a big FIXME is attached to the code. This causes the test case for PR 7218 now to pass. llvm-svn: 105195
* Revert r105097. Thinking about a better fix.Zhongxing Xu2010-05-291-18/+5
| | | | llvm-svn: 105099
* Fix PR7218. Patch by Jordy Rose.Zhongxing Xu2010-05-291-3/+17
| | | | llvm-svn: 105097
* Small fix.Zhongxing Xu2010-05-261-1/+1
| | | | llvm-svn: 104669
* Remove extents of dead symbolic regions when RemoveDeadBindings.Zhongxing Xu2010-05-261-7/+15
| | | | | | This requires creating new persistent states due to the nature of GDM. llvm-svn: 104668
* CastSizeChecker checks when casting a malloc'ed symbolic region to type T,Zhongxing Xu2010-05-251-7/+12
| | | | | | | whether the size of the symbolic region is a multiple of the size of T. Fixes PR6123 and PR7217. llvm-svn: 104584
* Introduce Type::isStructureOrClassType(), which does the obviousDouglas Gregor2010-04-261-8/+8
| | | | | | | | thing. Audit all uses of Type::isStructure(), changing those calls to isStructureOrClassType() as needed (which is alsmost everywhere). Fixes the remaining failure in Boost.Utility/Swap. llvm-svn: 102386
* Analyzer: add support for CXXNewExpr.Zhongxing Xu2010-04-191-10/+0
| | | | llvm-svn: 101771
* Remove copy of 'Optional' in Clang tree, and convert clients to use the one ↵Ted Kremenek2010-04-091-9/+9
| | | | | | now in the LLVM tree. llvm-svn: 100891
* Use the element type to compute the array size when the base region is a ↵Zhongxing Xu2010-04-011-3/+6
| | | | | | | | VarRegion. Patch by Jordy Rose. llvm-svn: 100099
* Fix a bug (PR 6699) in RegionStore::RemoveDeadBindings() whereTed Kremenek2010-04-011-32/+31
| | | | | | array values with a non-zero offset would get prematurely pruned from the store. llvm-svn: 100067
* RegionStore: specially handle loads from integer global variables declared ↵Ted Kremenek2010-03-301-1/+16
| | | | | | | | 'const'. Fixes a false positive reported in PR 6288. llvm-svn: 99922
* Use 'const Optional<SVal>&' to avoid an extra copy.Ted Kremenek2010-03-301-8/+8
| | | | llvm-svn: 99921
* Bind the constructed object value to CXXConstructExpr.Zhongxing Xu2010-03-231-3/+2
| | | | llvm-svn: 99271
* Mark CXXThisRegion in the current or parent stack frame context as live so thatZhongxing Xu2010-03-171-4/+18
| | | | | | their bindings are not removed. llvm-svn: 98705
* Add VisitCXXContructExpr logic to the analyzer. This still has not fully workedZhongxing Xu2010-03-161-9/+22
| | | | | | since RemoveDeadBinding mistakenly remove the binding to CXXThisRegion. llvm-svn: 98629
* Simplify assertion.Ted Kremenek2010-03-101-5/+1
| | | | llvm-svn: 98176
* Remove '#if 0' code. Lazy compound values have proven their worth.Ted Kremenek2010-03-101-39/+0
| | | | llvm-svn: 98175
* Remove the subregion map cache. It is no longer used.Ted Kremenek2010-03-101-8/+0
| | | | llvm-svn: 98161
* Fix stale comment.Ted Kremenek2010-03-101-1/+1
| | | | llvm-svn: 98160
* Really apply (unnoticed weird git-svn merge conflict in 98144): Refactor ↵Ted Kremenek2010-03-101-299/+290
| | | | | | | | | | | RegionStore::RemoveDeadBindings to use the same core cluster analysis algorithm as RegionStore::InvalidateRegions(). Beyond simplifying the algorithm significantly, we no longer need to build subregion maps in RemoveDeadBindings(). This and other changes cause a significant speedup: the time to analyze sqlite3.c (single core) drops by 14%. llvm-svn: 98159
* Refactor RegionStore::RemoveDeadBindings to use the same coreTed Kremenek2010-03-101-87/+87
| | | | | | | | | | | cluster analysis algorithm as RegionStore::InvalidateRegions(). Beyond simplifying the algorithm significantly, we no longer need to build subregion maps in RemoveDeadBindings(). This and other changes cause a significant speedup: the time to analyze sqlite3.c (single core) drops by 14%. llvm-svn: 98144
* Refactor some of RegionStore's InvalidateRegionsWorker classTed Kremenek2010-03-101-62/+86
| | | | | | | into a 'ClusterAnalysis' parent class. The idea is to potentially reuse this for reworking RemoveDeadBindings. llvm-svn: 98143
* Since now we store the cast type with an ElementRegion, there isZhongxing Xu2010-03-011-5/+5
| | | | | | no need to store a type with SymbolRegionValue. llvm-svn: 97437
* Assert when loading from a code text region instead of returning an unknown ↵Zhongxing Xu2010-03-011-1/+3
| | | | | | silently. llvm-svn: 97436
* Enhance RegionStore::InvalidateRegions() to correctly invalidate bindingsTed Kremenek2010-02-131-12/+32
| | | | | | by scanning through the values of LazyCompoundVals. llvm-svn: 96067
* Pull logic for visiting value bindings in InvalidateRegionsWorker into a ↵Ted Kremenek2010-02-131-20/+28
| | | | | | | | separate method. No functionality change. llvm-svn: 96060
* Eliminate the ASTContext parameter from RecordDecl::getDefinition()Douglas Gregor2010-02-111-1/+1
| | | | | | | and CXXRecordDecl::getDefinition(); it's totally unnecessary. No functionality change. llvm-svn: 95836
* Add comment.Zhongxing Xu2010-02-101-1/+2
| | | | llvm-svn: 95755
* Fix lookup of fields from lazy bindings to check if the region isTed Kremenek2010-02-091-9/+5
| | | | | | | | NULL, not the store, to determine if a lookup succeeded. The store can be null if it contained no bindings. This fixes a false positive reported to me by a user of the analyzer. llvm-svn: 95679
* Revert 95541.Ted Kremenek2010-02-081-1/+1
| | | | llvm-svn: 95545
* Rename: GRState::getSVal(Stmt*) => getExprVal(),Zhongxing Xu2010-02-081-1/+1
| | | | | | GRState::getSVal(MemRegion*) => Load(). llvm-svn: 95541
* Like for symbolic region, automatically create a element zero region for Zhongxing Xu2010-02-081-15/+5
| | | | | | alloca region. llvm-svn: 95539
* Unify the implementation of getLValueElement of store managers.Zhongxing Xu2010-02-081-57/+0
| | | | | | | It's more sophisticated than the original one of BasicStore. But it does matter. llvm-svn: 95536
* Unify the implementation of getLValueIvar and getLValueField of store managers.Zhongxing Xu2010-02-081-55/+0
| | | | llvm-svn: 95535
* Move common methods to the base StoreManager class.Zhongxing Xu2010-02-081-33/+0
| | | | llvm-svn: 95534
* Also teach RegionStore::RetrieveVar() to handle 'static' pointers that are ↵Ted Kremenek2010-02-061-1/+3
| | | | | | implicitly initialized to NULL. llvm-svn: 95479
* Fix regression in RegionStore (from BasicStore) where static variables were ↵Ted Kremenek2010-02-061-3/+15
| | | | | | not treated as being implicitly initialized to 0 (and instead were getting symbolicated). llvm-svn: 95478
* Teach RegionStore::InvalidateRegions() to also invalidate static variables ↵Ted Kremenek2010-02-061-4/+5
| | | | | | referenced by blocks. llvm-svn: 95459
* More GRState* -> Store changes.Zhongxing Xu2010-02-051-6/+4
| | | | llvm-svn: 95365
* Remove unused parameter.Zhongxing Xu2010-02-051-4/+2
| | | | llvm-svn: 95364
* More GRState* -> Store changes.Zhongxing Xu2010-02-051-6/+3
| | | | llvm-svn: 95362
* More GRState* -> Store changes.Zhongxing Xu2010-02-051-111/+92
| | | | llvm-svn: 95360
* More GRState* -> Store changes.Zhongxing Xu2010-02-051-31/+26
| | | | llvm-svn: 95357
* Change LazyCompoundVal to a <Store, MemRegion*> pair. We really don't need toZhongxing Xu2010-02-051-46/+46
| | | | | | spread GRState* everywhere. llvm-svn: 95354
OpenPOWER on IntegriCloud