#include #include #include #include #include #include #include #include #include ">

clang: lib/Analysis/ThreadSafety.cpp File Reference (original) (raw)

#include "[clang/Analysis/Analyses/ThreadSafety.h](ThreadSafety%5F8h%5Fsource.html)"
#include "[clang/AST/Attr.h](AST%5F2Attr%5F8h%5Fsource.html)"
#include "[clang/AST/Decl.h](Decl%5F8h%5Fsource.html)"
#include "[clang/AST/DeclCXX.h](DeclCXX%5F8h%5Fsource.html)"
#include "[clang/AST/DeclGroup.h](DeclGroup%5F8h%5Fsource.html)"
#include "[clang/AST/Expr.h](Expr%5F8h%5Fsource.html)"
#include "[clang/AST/ExprCXX.h](ExprCXX%5F8h%5Fsource.html)"
#include "[clang/AST/OperationKinds.h](OperationKinds%5F8h%5Fsource.html)"
#include "[clang/AST/Stmt.h](Stmt%5F8h%5Fsource.html)"
#include "[clang/AST/StmtVisitor.h](StmtVisitor%5F8h%5Fsource.html)"
#include "[clang/AST/Type.h](Type%5F8h%5Fsource.html)"
#include "[clang/Analysis/Analyses/PostOrderCFGView.h](PostOrderCFGView%5F8h%5Fsource.html)"
#include "[clang/Analysis/Analyses/ThreadSafetyCommon.h](ThreadSafetyCommon%5F8h%5Fsource.html)"
#include "[clang/Analysis/Analyses/ThreadSafetyTIL.h](ThreadSafetyTIL%5F8h%5Fsource.html)"
#include "[clang/Analysis/Analyses/ThreadSafetyTraverse.h](ThreadSafetyTraverse%5F8h%5Fsource.html)"
#include "[clang/Analysis/Analyses/ThreadSafetyUtil.h](ThreadSafetyUtil%5F8h%5Fsource.html)"
#include "[clang/Analysis/AnalysisDeclContext.h](AnalysisDeclContext%5F8h%5Fsource.html)"
#include "[clang/Analysis/CFG.h](CFG%5F8h%5Fsource.html)"
#include "[clang/Basic/Builtins.h](Builtins%5F8h%5Fsource.html)"
#include "[clang/Basic/LLVM.h](LLVM%5F8h%5Fsource.html)"
#include "[clang/Basic/OperatorKinds.h](OperatorKinds%5F8h%5Fsource.html)"
#include "[clang/Basic/SourceLocation.h](SourceLocation%5F8h%5Fsource.html)"
#include "[clang/Basic/Specifiers.h](Specifiers%5F8h%5Fsource.html)"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/ImmutableMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <functional>
#include <iterator>
#include <memory>
#include <optional>
#include <string>
#include <type_traits>
#include <utility>
#include <vector>

Go to the source code of this file.

Namespaces
namespace clang
The JSON file list parser is used to communicate input to InstallAPI.
namespace clang::threadSafety
Functions
static void warnInvalidLock (ThreadSafetyHandler &Handler, const Expr *MutexExp, const NamedDecl *D, const Expr *DeclExp, StringRef Kind)
Issue a warning about an invalid lock expression.
static void findBlockLocations (CFG *CFGraph, const PostOrderCFGView *SortedGraph, std::vector< CFGBlockInfo > &BlockInfo)
Find the appropriate source locations to use when producing diagnostics for each block in the CFG.
static const ValueDecl * getValueDecl (const Expr *Exp)
Gets the value decl pointer from DeclRefExprs or MemberExprs.
static bool getStaticBooleanValue (Expr *E, bool &TCond)
static const Expr * UnpackConstruction (const Expr *E)
static bool neverReturns (const CFGBlock *B)

findBlockLocations()

static void findBlockLocations ( CFG * CFGraph, const PostOrderCFGView * SortedGraph, std::vector< CFGBlockInfo > & BlockInfo ) static

getStaticBooleanValue()

static bool getStaticBooleanValue ( Expr * E, bool & TCond ) static

getValueDecl()

neverReturns()

UnpackConstruction()

static const Expr * UnpackConstruction ( const Expr * E) static

warnInvalidLock()