summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/BasicValueFactory.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove tabs, and whitespace cleanups.Mike Stump2009-09-091-59/+59
| | | | llvm-svn: 81346
* Implement lazy "copying" of structures and arrays in RegionStore. WhileTed Kremenek2009-08-061-0/+26
| | | | | | | | | | | | | | | | 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
* analyzer infrastructure: make a bunch of changes to symbolic expressions thatTed Kremenek2009-03-261-19/+0
| | | | | | | | | | | | | | | | 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
* Fix PR 3780: In one code path in BasicValueFactory::getValue() we would notTed Kremenek2009-03-111-1/+1
| | | | | | return an unsigned integer for a null pointer value. llvm-svn: 66630
* Rename SymbolID to SymbolRef. This is a precursor to some overhauling of ↵Ted Kremenek2008-12-051-1/+1
| | | | | | the representation of symbolic values. llvm-svn: 60575
* Initial support for checking out of bound memory access. Only support Zhongxing Xu2008-11-221-0/+6
| | | | | | ConcreteInt index for now. llvm-svn: 59869
* CompoundVal now uses an ImmutableList<SVal> to store its set of SVals. This ↵Ted Kremenek2008-10-301-22/+7
| | | | | | 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
* Add CompoundVal and CompoundValData for representing the value of InitListExpr.Zhongxing Xu2008-10-301-0/+38
| | | | llvm-svn: 58418
* Rename:Zhongxing Xu2008-10-211-1/+1
| | | | | | RValues.h/cpp => SVals.h/cpp llvm-svn: 57893
* This patch did the following renaming. There should be no functional changes.Zhongxing Xu2008-10-171-24/+24
| | | | | | | | | | RVal => SVal LVal => Loc NonLVal => NonLoc lval => loc nonlval => nonloc llvm-svn: 57671
* Implement second part of PR 2600: NSError** parameter may be null, and ↵Ted Kremenek2008-09-181-0/+5
| | | | | | should be checked before being dereferenced. llvm-svn: 56318
* Add lval::ArrayOffset, which represent the locations of entries in an array.Ted Kremenek2008-04-291-0/+39
| | | | llvm-svn: 50453
* Added lval::FieldOffset, which represents symbolic lvalues for field offsets ↵Ted Kremenek2008-04-291-11/+11
| | | | | | | | from other Lvalues. This removes the failure in null-deref-ps.c (test suite). llvm-svn: 50449
* Added "nonlval::LValAsInteger" to represent abstract LVals casted to ↵Ted Kremenek2008-04-221-0/+43
| | | | | | integers, allowing us to track lvals when they are casted back to pointers. llvm-svn: 50108
* Make a major restructuring of the clang tree: introduce a top-levelChris Lattner2008-03-151-0/+167
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
OpenPOWER on IntegriCloud