| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 81346
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RegionStore already lazily abstracted the contents of arrays and structs, when
doing an assignment from one array/struct to another we did an explicit
element-wise copy, which resulted in a loss of laziness and huge performance
problem when analyzing many code bases.
Now RegionStoreManager handles such assignments using a new SVal could
'LazyCompoundSVal', which basically means the value of a given struct or array
(a MemRegion*) in a specific state (GRState). When we do a load from a field
whose encompassing struct binds to a LazyCompoundSVal, we essentially do a field
lookup in the original structure. This means we have essentially zero copying of
data for structs/arrays and everything stays lazy.
llvm-svn: 78268
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Zhongxing and I discussed by email.
Main changes:
- Removed SymIntConstraintVal and SymIntConstraint
- Added SymExpr as a parent class to SymbolData, SymSymExpr, SymIntExpr
- Added nonloc::SymExprVal to wrap SymExpr
- SymbolRef is now just a typedef of 'const SymbolData*'
- Bunch of minor code cleanups in how some methods were invoked (no functionality change)
This changes are part of a long-term plan to have full symbolic expression
trees. This will be useful for lazily evaluating complicated expressions.
llvm-svn: 67731
|
|
|
|
|
|
| |
return an unsigned integer for a null pointer value.
llvm-svn: 66630
|
|
|
|
|
|
| |
the representation of symbolic values.
llvm-svn: 60575
|
|
|
|
|
|
| |
ConcreteInt index for now.
llvm-svn: 59869
|
|
|
|
|
|
| |
change was motivated by the need to allow state-splitting in GRExprEngine::VisitInitListExpr. As a side-benefit, we no longer need to perform any copies of SVals when creating a CompoundSVal, and the profiling of CompoundSVal is now constant time.
llvm-svn: 58437
|
|
|
|
| |
llvm-svn: 58418
|
|
|
|
|
|
| |
RValues.h/cpp => SVals.h/cpp
llvm-svn: 57893
|
|
|
|
|
|
|
|
|
|
| |
RVal => SVal
LVal => Loc
NonLVal => NonLoc
lval => loc
nonlval => nonloc
llvm-svn: 57671
|
|
|
|
|
|
| |
should be checked before being dereferenced.
llvm-svn: 56318
|
|
|
|
| |
llvm-svn: 50453
|
|
|
|
|
|
|
|
| |
from other Lvalues.
This removes the failure in null-deref-ps.c (test suite).
llvm-svn: 50449
|
|
|
|
|
|
| |
integers, allowing us to track lvals when they are casted back to pointers.
llvm-svn: 50108
|
|
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
|