llvm-project/clang/lib/Analysis
Ted Kremenek fa41714d8d Implement lazy "copying" of structures and arrays in RegionStore. While
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
2009-08-06 01:20:57 +00:00
..
AnalysisContext.cpp add a bunch of routine methods to AnalysisContext. 2009-08-03 07:23:22 +00:00
AnalysisManager.cpp Make AnalysisManager into its own source file and a pure data management class. 2009-07-30 09:11:52 +00:00
BasicConstraintManager.cpp Remove uses of std::ostream from libAnalysis. 2009-06-24 23:06:47 +00:00
BasicObjCFoundationChecks.cpp Remove some uses of TypedViewRegion, and use getBaseRegion() in a context where 2009-07-29 18:17:40 +00:00
BasicObjCFoundationChecks.h Add basic checking for passing NULL to CFRetain/CFRelease, since those functions 2009-07-14 00:43:42 +00:00
BasicStore.cpp Generalize the interface of 'StoreManager::RemoveDeadBindings()' to manipulate the entire GRState, not just the Store. 2009-08-02 04:45:08 +00:00
BasicValueFactory.cpp Implement lazy "copying" of structures and arrays in RegionStore. While 2009-08-06 01:20:57 +00:00
BugReporter.cpp add a fixme 2009-07-29 08:13:37 +00:00
BugReporterVisitors.cpp Refactor 'PostStmt' and 'PreStmt' to subclass a common parent 'StmtPoint'. 2009-07-22 22:35:28 +00:00
CFG.cpp Add noreturn as a type attribute, handle printing for them and handle 2009-07-25 21:26:53 +00:00
CFRefCount.cpp Get rid of "smart" quotes. Per report on cfe-dev. 2009-08-05 19:21:58 +00:00
CMakeLists.txt fix cmake build 2009-07-30 10:38:43 +00:00
CallGraph.cpp Add getDecl() to CallGraph and CallGraphNode. 2009-07-24 03:41:11 +00:00
CheckDeadStores.cpp Remove the ASTContext parameter from the attribute-related methods of Decl. 2009-06-30 02:34:44 +00:00
CheckNSError.cpp Change uses of: 2009-07-29 21:53:49 +00:00
CheckObjCDealloc.cpp Remove ASTContext::isObjCObjectPointerType(). 2009-07-16 15:41:00 +00:00
CheckObjCInstMethSignature.cpp Introduce Type::isAnyPointerType() and convert all clients (suggested by Chris). 2009-07-14 18:25:06 +00:00
CheckObjCUnusedIVars.cpp remove dead code. 2009-06-30 07:50:26 +00:00
CheckSecuritySyntaxOnly.cpp In the "use of floating point variable as loop counter" check, check 2009-07-24 20:26:31 +00:00
Environment.cpp add fixme. 2009-07-01 02:12:57 +00:00
ExplodedGraph.cpp Use the correct data structures! 2009-03-12 23:41:59 +00:00
GRBlockCounter.cpp Updated clients of ImmutableMap::SlimFind to use ImmutableMap::lookup instead. 2008-07-07 16:21:19 +00:00
GRCoreEngine.cpp Refactor 'PostStmt' and 'PreStmt' to subclass a common parent 'StmtPoint'. 2009-07-22 22:35:28 +00:00
GRExprEngine.cpp If the UnaryOperator has non-location type, use its type to create the 2009-08-05 02:51:59 +00:00
GRExprEngineInternalChecks.cpp Fix regression in attribute 'nonnull' checking when a transition node 2009-07-28 19:24:31 +00:00
GRState.cpp Generalize the interface of 'StoreManager::RemoveDeadBindings()' to manipulate the entire GRState, not just the Store. 2009-08-02 04:45:08 +00:00
LiveVariables.cpp Move the source-level CFG from libAST to libAnalysis. 2009-07-16 18:13:04 +00:00
Makefile Build system changes to use TableGen to generate the various 2009-03-16 23:06:59 +00:00
MemRegion.cpp This is a fairly large patch, which resulted from a cascade of changes 2009-08-01 06:17:29 +00:00
PathDiagnostic.cpp Remove '#include <sstream>' from libAnalysis. 2009-06-26 00:43:22 +00:00
RangeConstraintManager.cpp Remove uses of std::ostream from libAnalysis. 2009-06-24 23:06:47 +00:00
RegionStore.cpp Implement lazy "copying" of structures and arrays in RegionStore. While 2009-08-06 01:20:57 +00:00
SVals.cpp Implement lazy "copying" of structures and arrays in RegionStore. While 2009-08-06 01:20:57 +00:00
SValuator.cpp Remove 'StoreManager::OldCastRegion()', TypedViewRegion (which only 2009-07-29 21:43:22 +00:00
SimpleConstraintManager.cpp Remove GRStateManager& field from SimpleConstraintManager. 2009-06-18 23:20:05 +00:00
SimpleConstraintManager.h Remove GRStateManager& field from SimpleConstraintManager. 2009-06-18 23:20:05 +00:00
SimpleSValuator.cpp Fix PR 4594 by refactoring almost all casting logic from GRExprEngine::VisitCast 2009-07-21 21:03:30 +00:00
Store.cpp Fix regression in StoreManager::CastRegion() to always treat casts to 2009-08-02 04:12:53 +00:00
SymbolManager.cpp This is a fairly large patch, which resulted from a cascade of changes 2009-08-01 06:17:29 +00:00
UninitializedValues.cpp rename some methods. 2009-03-28 06:33:19 +00:00
ValueManager.cpp This is a fairly large patch, which resulted from a cascade of changes 2009-08-01 06:17:29 +00:00