clang 20.0.0git
|
Namespaces | |
namespace | lexpr |
namespace | sx |
namespace | til |
Classes | |
class | BeforeSet |
class | CapabilityExpr |
class | CFGVisitor |
class | CFGWalker |
class | CopyOnWriteVector |
class | SExprBuilder |
class | ThreadSafetyHandler |
Handler class for thread safety warnings. More... | |
Enumerations | |
enum | ProtectedOperationKind { POK_VarDereference , POK_VarAccess , POK_FunctionCall , POK_PassByRef , POK_PtPassByRef , POK_ReturnByRef , POK_PtReturnByRef } |
This enum distinguishes between different kinds of operations that may need to be protected by locks. More... | |
enum | LockKind { LK_Shared , LK_Exclusive , LK_Generic } |
This enum distinguishes between different kinds of lock actions. More... | |
enum | AccessKind { AK_Read , AK_Written } |
This enum distinguishes between different ways to access (read or write) a variable. More... | |
enum | LockErrorKind { LEK_LockedSomeLoopIterations , LEK_LockedSomePredecessors , LEK_LockedAtEndOfFunction , LEK_NotLockedAtEndOfFunction } |
Functions | |
void | runThreadSafetyAnalysis (AnalysisDeclContext &AC, ThreadSafetyHandler &Handler, BeforeSet **Bset) |
Check a function's CFG for thread-safety violations. | |
void | threadSafetyCleanup (BeforeSet *Cache) |
LockKind | getLockKindFromAccessKind (AccessKind AK) |
Helper function that returns a LockKind required for the given level of access. | |
void | printSCFG (CFGWalker &Walker) |
std::string | getSourceLiteralString (const Expr *CE) |
std::ostream & | operator<< (std::ostream &ss, const StringRef str) |
This enum distinguishes between different ways to access (read or write) a variable.
Enumerator | |
---|---|
AK_Read | Reading a variable. |
AK_Written | Writing a variable. |
Definition at line 75 of file ThreadSafety.h.
Enumerator | |
---|---|
LEK_LockedSomeLoopIterations | |
LEK_LockedSomePredecessors | |
LEK_LockedAtEndOfFunction | |
LEK_NotLockedAtEndOfFunction |
Definition at line 91 of file ThreadSafety.h.
This enum distinguishes between different kinds of lock actions.
For example, it is an error to write a variable protected by shared version of a mutex.
Enumerator | |
---|---|
LK_Shared | Shared/reader lock of a mutex. |
LK_Exclusive | Exclusive/writer lock of a mutex. |
LK_Generic | Can be either Shared or Exclusive. |
Definition at line 62 of file ThreadSafety.h.
This enum distinguishes between different kinds of operations that may need to be protected by locks.
We use this enum in error handling.
Definition at line 36 of file ThreadSafety.h.
LockKind clang::threadSafety::getLockKindFromAccessKind | ( | AccessKind | AK | ) |
Helper function that returns a LockKind required for the given level of access.
Definition at line 2555 of file ThreadSafety.cpp.
References AK_Read, AK_Written, LK_Exclusive, and LK_Shared.
std::string clang::threadSafety::getSourceLiteralString | ( | const Expr * | CE | ) |
Definition at line 41 of file ThreadSafetyCommon.cpp.
References clang::Stmt::getStmtClass(), and toString().
Referenced by clang::threadSafety::til::PrettyPrinter< Self, StreamType >::printLiteral().
|
inline |
Definition at line 354 of file ThreadSafetyUtil.h.
void clang::threadSafety::printSCFG | ( | CFGWalker & | Walker | ) |
Definition at line 1009 of file ThreadSafetyCommon.cpp.
References clang::threadSafety::SExprBuilder::buildCFG().
void clang::threadSafety::runThreadSafetyAnalysis | ( | AnalysisDeclContext & | AC, |
ThreadSafetyHandler & | Handler, | ||
BeforeSet ** | BSet | ||
) |
Check a function's CFG for thread-safety violations.
We traverse the blocks in the CFG, compute the set of mutexes that are held at the end of each block, and issue warnings for thread safety violations. Each block in the CFG is traversed exactly once.
Definition at line 2542 of file ThreadSafety.cpp.
Referenced by clang::sema::AnalysisBasedWarnings::IssueWarnings().
void clang::threadSafety::threadSafetyCleanup | ( | BeforeSet * | Cache | ) |
Definition at line 2551 of file ThreadSafety.cpp.
References clang::Cache.
Referenced by clang::Sema::~Sema().