hanchenye-llvm-project/clang/lib/Analysis
Ed Schouten ca98874943 Allow a scoped lockable object to acquire/release multiple locks.
Scoped lockable objects (mutex guards) are implemented as if it is a
lock itself that is acquired upon construction and unlocked upon
destruction. As it if course needs to be used to actually lock down
something else (a mutex), it keeps track of this knowledge through its
underlying mutex field in its FactEntry.

The problem with this approach is that this only allows us to lock down
a single mutex, so extend the code to use a vector of underlying
mutexes. This, however, makes the code a bit more complex than
necessary, so subclass FactEntry into LockableFactEntry and
ScopedLockableFactEntry and move all the logic that differs between
regular locks and scoped lockables into member functions.

llvm-svn: 217016
2014-09-03 06:00:11 +00:00
..
AnalysisDeclContext.cpp unique_ptrify the result of CFG::buildCFG/CFGBuilder::buildCFG 2014-08-29 18:53:26 +00:00
BodyFarm.cpp Add support for the static analyzer to synthesize function implementations from external model files. 2014-08-27 15:14:15 +00:00
BodyFarm.h Add support for the static analyzer to synthesize function implementations from external model files. 2014-08-27 15:14:15 +00:00
CFG.cpp unique_ptrify the result of CFG::buildCFG/CFGBuilder::buildCFG 2014-08-29 18:53:26 +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 Add support for the static analyzer to synthesize function implementations from external model files. 2014-08-27 15:14:15 +00:00
CallGraph.cpp [C++11] Use 'nullptr'. Analysis edition. 2014-05-20 04:30:07 +00:00
CocoaConventions.cpp Excise <cctype> from Clang (except clang-tblgen) in favor of CharInfo.h. 2013-02-08 22:30:41 +00:00
CodeInjector.cpp Add support for the static analyzer to synthesize function implementations from external model files. 2014-08-27 15:14:15 +00:00
Consumed.cpp Use the proper post-order traversal in LiveVariables analysis, 2014-08-14 16:04:47 +00:00
DataflowWorklist.cpp Use the proper post-order traversal in LiveVariables analysis, 2014-08-14 16:04:47 +00:00
Dominators.cpp
FormatString.cpp Add a comment, no functional change. 2014-08-29 21:05:44 +00:00
FormatStringParsing.h Header guard canonicalization, clang part. 2014-08-13 16:25:19 +00:00
LiveVariables.cpp Use the proper post-order traversal in LiveVariables analysis, 2014-08-14 16:04:47 +00:00
Makefile
ObjCNoReturn.cpp
PostOrderCFGView.cpp Use the proper post-order traversal in LiveVariables analysis, 2014-08-14 16:04:47 +00:00
PrintfFormatString.cpp [C++11] Use 'nullptr'. Analysis edition. 2014-05-20 04:30:07 +00:00
ProgramPoint.cpp [analyzer] Improved checker naming in CFG dump. 2014-02-17 18:25:34 +00:00
PseudoConstantAnalysis.cpp [C++11] Use 'nullptr'. Analysis edition. 2014-05-20 04:30:07 +00:00
ReachableCode.cpp Make dead return statement detection more robust against changes in the CFG. 2014-05-23 17:09:56 +00:00
ScanfFormatString.cpp [C++11] Use 'nullptr'. Analysis edition. 2014-05-20 04:30:07 +00:00
ThreadSafety.cpp Allow a scoped lockable object to acquire/release multiple locks. 2014-09-03 06:00:11 +00:00
ThreadSafetyCommon.cpp Thread safety analysis: Add support for negative requirements, which are 2014-08-04 16:10:59 +00:00
ThreadSafetyLogical.cpp Fix line endings. 2014-05-28 11:19:43 +00:00
ThreadSafetyTIL.cpp Thread Safety Analysis: Replace the old and broken SExpr with the new 2014-07-28 15:57:27 +00:00
UninitializedValues.cpp More -Wuninitialized updates 2014-08-27 22:15:10 +00:00