| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
RValues.h/cpp => SVals.h/cpp
llvm-svn: 57893
|
|
|
|
|
|
|
|
|
|
| |
RVal => SVal
LVal => Loc
NonLVal => NonLoc
lval => loc
nonlval => nonloc
llvm-svn: 57671
|
|
|
|
|
|
|
|
|
|
|
| |
regions.
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
"lvalue" type directly.
llvm-svn: 56912
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 54874
|
|
|
|
|
|
|
|
| |
- Drop {Decl.h,DeclObjC.h,IdentifierTable.h} from Expr.h
- Moved Sema::getCurMethodDecl() out of line (dependent on
ObjCMethodDecl via dyn_cast).
llvm-svn: 54629
|
|
|
|
| |
llvm-svn: 53754
|
|
|
|
| |
llvm-svn: 53753
|
|
|
|
| |
llvm-svn: 50503
|
|
|
|
| |
llvm-svn: 50453
|
|
|
|
|
|
|
|
| |
from other Lvalues.
This removes the failure in null-deref-ps.c (test suite).
llvm-svn: 50449
|
|
|
|
| |
llvm-svn: 50109
|
|
|
|
|
|
| |
integers, allowing us to track lvals when they are casted back to pointers.
llvm-svn: 50108
|
|
|
|
| |
llvm-svn: 49101
|
|
lib dir and move all the libraries into it. This follows the main
llvm tree, and allows the libraries to be built in parallel. The
top level now enforces that all the libs are built before Driver,
but we don't care what order the libs are built in. This speeds
up parallel builds, particularly incremental ones.
llvm-svn: 48402
|