llvm-project/clang/lib/StaticAnalyzer/Core
Pavel Labath 71bb987997 [analyzer] Fix inefficiency in dead symbol removal
Summary:
ScanReachableSymbols uses a "visited" set to avoid scanning the same object
twice. However, it did not use the optimization for LazyCompoundVal objects,
which resulted in exponential complexity for long chains of temporary objects.
Adding this resulted in a decrease of analysis time from >3h to 3 seconds for
some files.

Reviewers: jordan_rose

CC: cfe-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1398

llvm-svn: 188677
2013-08-19 15:23:34 +00:00
..
APSIntType.cpp [analyzer] Teach constraint managers about unsigned comparisons. 2013-03-23 01:21:33 +00:00
AnalysisManager.cpp Add configuration plumbing to enable static initializer branching in the CFG for the analyzer. 2013-03-29 00:09:22 +00:00
AnalyzerOptions.cpp Revert "[analyzer] Add very limited support for temporary destructors" 2013-07-23 02:15:11 +00:00
BasicValueFactory.cpp [analyzer] Disallow creation of int vals with explicit bit width / signedness. 2012-09-01 17:39:24 +00:00
BlockCounter.cpp Cleanup various declarations of 'Stmt*' to be 'Stmt *', etc. in libAnalyzer and libStaticAnalyzer[*]. It was highly inconsistent, and very ugly to look at. 2011-08-12 23:37:29 +00:00
BugReporter.cpp [analyzer] Clarify that r187624 is a hack and should be fixed better later. 2013-08-05 16:02:02 +00:00
BugReporterVisitors.cpp [analyzer] Fixup for r185609: actually do suppress warnings coming out of std::list. 2013-07-09 01:55:00 +00:00
CMakeLists.txt [analyzer] Merge TextPathDiagnostics and ClangDiagPathDiagConsumer. 2013-08-16 01:06:30 +00:00
CallEvent.cpp Fix a crash in the static analyzer (bug #16307) 2013-06-19 08:19:56 +00:00
Checker.cpp Reapply r149311 which I reverted by mistake. 2012-01-31 02:23:28 +00:00
CheckerContext.cpp Cleanup handling of UniqueExternalLinkage. 2013-05-13 00:12:11 +00:00
CheckerHelpers.cpp
CheckerManager.cpp Replace some DenseMap keys with simpler structures that don't need another DenseMapInfo specialization. 2013-08-16 21:57:06 +00:00
CheckerRegistry.cpp Remove useless 'llvm::' qualifier from names like StringRef and others that are 2013-01-12 19:30:44 +00:00
ConstraintManager.cpp [analyzer] Let ConstraintManager subclasses provide a more efficient checkNull. 2012-10-31 16:44:55 +00:00
CoreEngine.cpp Add static analyzer support for conditionally executing static initializers. 2013-03-29 00:09:28 +00:00
Environment.cpp [analyzer] Consolidate constant evaluation logic in SValBuilder. 2013-05-01 23:10:44 +00:00
ExplodedGraph.cpp [analyzer] Cleanup: only get the PostStmt when we need the underlying Stmt + comment 2013-03-27 17:36:01 +00:00
ExprEngine.cpp [analyzer] Fix FP warnings when binding a temporary to a local static variable 2013-07-26 11:50:42 +00:00
ExprEngineC.cpp [analyzer] Enable usage of temporaries in InitListExprs 2013-08-09 07:46:29 +00:00
ExprEngineCXX.cpp [analyzer] Remove dead optimization for MaterializeTemporaryExpr. 2013-07-25 22:32:35 +00:00
ExprEngineCallAndReturn.cpp Revert "[analyzer] Add very limited support for temporary destructors" 2013-07-23 02:15:11 +00:00
ExprEngineObjC.cpp Include llvm::Optional in clang/Basic/LLVM.h 2013-02-20 22:23:23 +00:00
FunctionSummary.cpp [analyzer] Use inline storage in the FunctionSummary DenseMap. 2013-04-02 00:26:26 +00:00
HTMLDiagnostics.cpp Use llvm::sys::fs::createUniqueFile. 2013-07-05 21:13:58 +00:00
Makefile
MemRegion.cpp Using the function pointer instead of the function type; this allows us to re-enable a warning in MSVC by default. 2013-07-27 03:34:50 +00:00
PathDiagnostic.cpp [analyzer] Treat analyzer-synthesized function bodies like implicit bodies. 2013-05-24 21:43:11 +00:00
PlistDiagnostics.cpp [analyzer] Merge TextPathDiagnostics and ClangDiagPathDiagConsumer. 2013-08-16 01:06:30 +00:00
PrettyStackTraceLocationContext.h [analyzer] Include analysis stack in crash traces. 2013-07-19 00:59:08 +00:00
ProgramState.cpp [analyzer] Fix inefficiency in dead symbol removal 2013-08-19 15:23:34 +00:00
RangeConstraintManager.cpp [analyzer] Teach constraint managers about unsigned comparisons. 2013-03-23 01:21:33 +00:00
RegionStore.cpp [analyzer] Handle C string default values for const char * arguments. 2013-07-17 17:16:38 +00:00
SValBuilder.cpp [analyzer] Weaken assertion to account for pointer-to-integer casts. 2013-07-25 17:22:02 +00:00
SVals.cpp [analyzer] Ensure BugReporterTracking works on regions with pointer arithmetic 2013-04-20 01:15:42 +00:00
SimpleConstraintManager.cpp [analyzer] Ensure BugReporterTracking works on regions with pointer arithmetic 2013-04-20 01:15:42 +00:00
SimpleConstraintManager.h [analyzer] Translate "a != b" to "(b - a) != 0" in the constraint manager. 2013-03-23 01:21:16 +00:00
SimpleSValBuilder.cpp [analyzer] Explicitly disallow mixed Loc-NonLoc comparisons. 2013-07-02 01:37:40 +00:00
Store.cpp Fix static analyzer crash when casting from an incomplete type 2013-06-20 07:45:01 +00:00
SubEngine.cpp Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:48:34 +00:00
SymbolManager.cpp [analyzer] Replace isIntegerType() with isIntegerOrEnumerationType(). 2013-04-09 02:30:33 +00:00