| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 96341
|
|
|
|
|
|
| |
to evaluate arguments.
llvm-svn: 96293
|
|
|
|
|
|
| |
the LLVMConventionsChecker.
llvm-svn: 96202
|
|
|
|
|
|
| |
that allocate heap memory.
llvm-svn: 96184
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of operating on each code decl. This exposes two flaws in AnalysisConsumer
that should eventually be fixed:
(1) It is not possible to associate multiple "actions" with a single
command line argument. This will require the notion of an
"analysis" group, and possibly tablegen support. (although eventually
we want to support dynamically loading analyses as well)
(2) AnalysisConsumer may not actually be scanning the declarations in namespaces.
We'll experiment first in LLVMConventionsChecker before changing the
behavior in AnalysisConsumer.
llvm-svn: 96183
|
|
|
|
| |
llvm-svn: 96181
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 96180
|
|
|
|
| |
llvm-svn: 96154
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-analyzer-check-llvm-conventions
Currently these checks are intended to be largely syntactical, but may get more
sophisticated over time.
As an initial foray into this brave new world, emit a static analyzer warning
when binding a temporary 'std::string' to an 'llvm::StringRef' where the
lifetime of the 'std::string' does not outlive the 'llvm::StringRef'.
llvm-svn: 96147
|
|
|
|
|
|
| |
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: 95563
|
|
|
|
| |
llvm-svn: 95561
|
|
|
|
| |
llvm-svn: 95552
|
|
|
|
|
|
| |
convention lookup.
llvm-svn: 95547
|
|
|
|
|
|
| |
3 files changed, 76 insertions(+), 153 deletions(-)
llvm-svn: 95546
|
|
|
|
| |
llvm-svn: 95545
|
|
|
|
|
|
| |
GRState::getSVal(MemRegion*) => Load().
llvm-svn: 95541
|
|
|
|
| |
llvm-svn: 95540
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 95531
|
|
|
|
| |
llvm-svn: 95529
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 95365
|
|
|
|
| |
llvm-svn: 95364
|
|
|
|
| |
llvm-svn: 95362
|
|
|
|
| |
llvm-svn: 95360
|
|
|
|
| |
llvm-svn: 95357
|
|
|
|
|
|
| |
spread GRState* everywhere.
llvm-svn: 95354
|
|
|
|
| |
llvm-svn: 95290
|
|
|
|
| |
llvm-svn: 95287
|
|
|
|
| |
llvm-svn: 95286
|
|
|
|
| |
llvm-svn: 95279
|
|
|
|
|
|
|
|
| |
a different return type. While we don't emit any errors (yet), at
least we avoid cases where we might crash because of an assertion
failure later on (when the return type differs from what is expected).
llvm-svn: 95268
|
|
|
|
| |
llvm-svn: 95215
|
|
|
|
| |
llvm-svn: 95214
|
|
|
|
|
|
|
|
|
| |
RegionStoreManager::InvalidateRegions() by adjusting the worklist to
iterate over BindingKeys instead of MemRegions. We also only need to
do the actual invalidation work on base regions, and for non-base
regions just blow away their bindings.
llvm-svn: 95200
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
not build a subregion map and instead do a single scan of the store.
This is done by building "region clusters" that represent the
collection of regions that have the same base region. Invalidating
any region in a cluster means that they all should get invalidated.
This change brought out a point that Zhongxing mentioned to me
offline: the flattened memory binding has issues distinguishing
between direct and default bindings. For example, setting the default
value for an entire struct is the same as binding to the first
element. To address this problem, I moved the binding "tag" (Direct
or Default) from BindingVal to BdingKey (and removed BindingVal
entirely). This requires us to do double lookups in some cases; and
there is still much more cleanup that can be done.
This change produced a noticeable speedup when analyzing sqlite3 (a
reduction of 4% in running time).
llvm-svn: 95193
|
|
|
|
|
|
| |
RegionStoreSubRegionMap::begin_end(). This is a precursor to using DenseSet to represent region sets instead of ImmutableSet.
llvm-svn: 95151
|
|
|
|
|
|
| |
asserting in SValuator.
llvm-svn: 95128
|
|
|
|
|
|
|
| |
'Pred' to 'Dst' for cases we currently don't handle. This fixes
<rdar://problem/7593875>.
llvm-svn: 95048
|
|
|
|
|
|
| |
method. No functionality change.
llvm-svn: 95037
|