llvm-project/clang/lib/Analysis
Alexander Shaposhnikov fd905fcc14 [analyzer] Remove superquadratic behaviour from DataflowWorklist
The class DataflowWorklist internally maintains a sorted list of pointers to CFGBlock
and the method enqueuePredecessors has to call sortWorklist to maintain the invariant. 
The implementation based on vector + sort works well for small sizes 
but gets infeasible for relatively large sizes. In particular the issue takes place 
for some cryptographic libraries which use code generation. 
The diff replaces vector + sort with priority queue.
For one of the implementations of AES this patch reduces 
the time for analysis from 204 seconds to 8 seconds.

Test plan: make -j8 check-clang

Differential revision: https://reviews.llvm.org/D25503

llvm-svn: 284166
2016-10-13 21:31:46 +00:00
..
AnalysisDeclContext.cpp [Analysis] Use unique_ptr in AnalyaisDeclContextManager's ContextMap. 2016-10-10 16:26:44 +00:00
BodyFarm.cpp P0305R0: Semantic analysis and code generation for C++17 init-statement for 'if' and 'switch': 2016-07-14 00:11:03 +00:00
BodyFarm.h Make headers self-contained. 2016-02-02 11:06:57 +00:00
CFG.cpp [StaticAnalyzer] Fix UnreachableCode false positives. 2016-10-03 08:28:51 +00:00
CFGReachabilityAnalysis.cpp Rework CFG edges to encode potentially unreachable edges, instead of just making them NULL. 2014-02-27 00:24:00 +00:00
CFGStmtMap.cpp [C++11] Use 'nullptr'. Analysis edition. 2014-05-20 04:30:07 +00:00
CMakeLists.txt [analyzer] Add basic capabilities to detect source code clones. 2016-07-26 18:13:12 +00:00
CallGraph.cpp [Analysis] Use unique_ptr for CallGraph::FunctionMap. 2016-10-10 16:26:48 +00:00
CloneDetection.cpp [analyzer] Re-apply r283094 "Improve CloneChecker diagnostics" 2016-10-08 10:54:30 +00:00
CocoaConventions.cpp Allow the cf_returns_[not_]retained attributes to appear on out-parameters. 2015-06-19 23:17:46 +00:00
CodeInjector.cpp Roll-back r250822. 2015-10-20 13:23:58 +00:00
Consumed.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
Dominators.cpp
FormatString.cpp Move UTF functions into namespace llvm. 2016-09-30 00:38:45 +00:00
FormatStringParsing.h [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
LiveVariables.cpp [analyzer] Remove superquadratic behaviour from DataflowWorklist 2016-10-13 21:31:46 +00:00
ObjCNoReturn.cpp
PostOrderCFGView.cpp Reverting r214064 and r215650 while investigating a pesky performance regression 2014-09-23 08:34:41 +00:00
PrintfFormatString.cpp Enable support for __float128 in Clang and enable it on pertinent platforms 2016-05-09 08:52:33 +00:00
ProgramPoint.cpp Roll-back r250822. 2015-10-20 13:23:58 +00:00
PseudoConstantAnalysis.cpp Avoid overly large SmallPtrSet/SmallSet 2016-01-30 01:27:06 +00:00
ReachableCode.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
ScanfFormatString.cpp [Sema] Don't crash on scanf on forward-declared enums. 2016-08-20 16:51:33 +00:00
ThreadSafety.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
ThreadSafetyCommon.cpp [NFC] Header cleanup 2016-07-18 19:02:11 +00:00
ThreadSafetyLogical.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
ThreadSafetyTIL.cpp Hide away implementation details of the ThreadSafetyAnalysis in anonymous namespaces 2015-03-09 14:19:54 +00:00
UninitializedValues.cpp Roll-back r250822. 2015-10-20 13:23:58 +00:00