| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
SubRegions. Fixes assertion failure
reported in PR 7572.
llvm-svn: 107738
|
|
|
|
|
|
|
|
|
|
| |
regions that may not be known at compile-time (such as those created by malloc). This replaces the old setExtent/getExtent API on Store, which used the GRState's GDM to store SVals.
Also adds a getKnownValue() method to SValuator, which gets the integer value of an SVal if it is known to only have one possible value. There are more places in the code that could be using this, but in general we want to be dealing entirely in SVals, so its usefulness is limited.
The only visible functionality change is that extents are now honored for any DeclRegion, such as fields and Objective-C ivars, rather than just variables. This shows up in bounds-checking and cast-size-checking.
llvm-svn: 107577
|
|
|
|
|
|
|
|
|
|
|
| |
non-static global variables
when calling a function/method whose impact on global variables we cannot accurately estimate.
This change introduces two new MemSpaceRegions that divide up the memory space of globals, and causes
RegionStore and BasicStore to consult a binding to the NonStaticGlobalsMemSpaceRegion when lazily
determining the value of a global.
llvm-svn: 107423
|
|
|
|
|
|
| |
the current statement around everywhere. Preparation for symbolic extents.
llvm-svn: 107422
|
|
|
|
|
|
| |
SimpleSValuator::EvalBinOpLL().
llvm-svn: 106992
|
|
|
|
|
|
| |
scaled as well.
llvm-svn: 106911
|
|
|
|
|
|
| |
from the context when it is not already available.
llvm-svn: 106868
|
|
|
|
|
|
|
|
| |
Fixes analyzer
crash reported in PR 7450.
llvm-svn: 106609
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 105265
|
|
|
|
|
|
| |
modification.
llvm-svn: 105264
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 105099
|
|
|
|
| |
llvm-svn: 105097
|
|
|
|
| |
llvm-svn: 104669
|
|
|
|
|
|
| |
This requires creating new persistent states due to the nature of GDM.
llvm-svn: 104668
|
|
|
|
|
|
|
| |
whether the size of the symbolic region is a multiple of the size of T.
Fixes PR6123 and PR7217.
llvm-svn: 104584
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 101771
|
|
|
|
|
|
| |
now in the LLVM tree.
llvm-svn: 100891
|
|
|
|
|
|
|
|
| |
VarRegion.
Patch by Jordy Rose.
llvm-svn: 100099
|
|
|
|
|
|
| |
array values with a non-zero offset would get prematurely pruned from the store.
llvm-svn: 100067
|
|
|
|
|
|
|
|
| |
'const'.
Fixes a false positive reported in PR 6288.
llvm-svn: 99922
|
|
|
|
| |
llvm-svn: 99921
|
|
|
|
| |
llvm-svn: 99271
|
|
|
|
|
|
| |
their bindings are not removed.
llvm-svn: 98705
|
|
|
|
|
|
| |
since RemoveDeadBinding mistakenly remove the binding to CXXThisRegion.
llvm-svn: 98629
|
|
|
|
| |
llvm-svn: 98176
|
|
|
|
| |
llvm-svn: 98175
|
|
|
|
| |
llvm-svn: 98161
|
|
|
|
| |
llvm-svn: 98160
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
into a 'ClusterAnalysis' parent class. The idea is
to potentially reuse this for reworking RemoveDeadBindings.
llvm-svn: 98143
|
|
|
|
|
|
| |
no need to store a type with SymbolRegionValue.
llvm-svn: 97437
|
|
|
|
|
|
| |
silently.
llvm-svn: 97436
|
|
|
|
|
|
| |
by scanning through the values of LazyCompoundVals.
llvm-svn: 96067
|
|
|
|
|
|
|
|
| |
separate method.
No functionality change.
llvm-svn: 96060
|
|
|
|
|
|
|
| |
and CXXRecordDecl::getDefinition(); it's totally unnecessary. No
functionality change.
llvm-svn: 95836
|
|
|
|
| |
llvm-svn: 95755
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 95545
|
|
|
|
|
|
| |
GRState::getSVal(MemRegion*) => Load().
llvm-svn: 95541
|
|
|
|
|
|
| |
alloca region.
llvm-svn: 95539
|
|
|
|
|
|
|
| |
It's more sophisticated than the original one of BasicStore. But it does
matter.
llvm-svn: 95536
|
|
|
|
| |
llvm-svn: 95535
|
|
|
|
| |
llvm-svn: 95534
|
|
|
|
|
|
| |
implicitly initialized to NULL.
llvm-svn: 95479
|
|
|
|
|
|
| |
not treated as being implicitly initialized to 0 (and instead were getting symbolicated).
llvm-svn: 95478
|
|
|
|
|
|
| |
referenced by blocks.
llvm-svn: 95459
|