LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros | Functions | Variables
ThreadSanitizer.cpp File Reference
#include "llvm/Transforms/Instrumentation.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"
#include "llvm/Transforms/Utils/SpecialCaseList.h"
Include dependency graph for ThreadSanitizer.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "tsan"
 

Functions

 STATISTIC (NumInstrumentedReads,"Number of instrumented reads")
 
 STATISTIC (NumInstrumentedWrites,"Number of instrumented writes")
 
 STATISTIC (NumOmittedReadsBeforeWrite,"Number of reads ignored due to following writes")
 
 STATISTIC (NumAccessesWithBadSize,"Number of accesses with bad size")
 
 STATISTIC (NumInstrumentedVtableWrites,"Number of vtable ptr writes")
 
 STATISTIC (NumInstrumentedVtableReads,"Number of vtable ptr reads")
 
 STATISTIC (NumOmittedReadsFromConstantGlobals,"Number of reads from constant globals")
 
 STATISTIC (NumOmittedReadsFromVtable,"Number of vtable reads")
 
static FunctioncheckInterfaceFunction (Constant *FuncOrBitcast)
 
static bool isVtableAccess (Instruction *I)
 
static bool isAtomic (Instruction *I)
 
static ConstantIntcreateOrdering (IRBuilder<> *IRB, AtomicOrdering ord)
 
static ConstantIntcreateFailOrdering (IRBuilder<> *IRB, AtomicOrdering ord)
 

Variables

static cl::opt< std::string > ClBlacklistFile ("tsan-blacklist", cl::desc("Blacklist file"), cl::Hidden)
 
static cl::opt< boolClInstrumentMemoryAccesses ("tsan-instrument-memory-accesses", cl::init(true), cl::desc("Instrument memory accesses"), cl::Hidden)
 
static cl::opt< boolClInstrumentFuncEntryExit ("tsan-instrument-func-entry-exit", cl::init(true), cl::desc("Instrument function entry and exit"), cl::Hidden)
 
static cl::opt< boolClInstrumentAtomics ("tsan-instrument-atomics", cl::init(true), cl::desc("Instrument atomics"), cl::Hidden)
 
static cl::opt< boolClInstrumentMemIntrinsics ("tsan-instrument-memintrinsics", cl::init(true), cl::desc("Instrument memintrinsics (memset/memcpy/memmove)"), cl::Hidden)
 

Macro Definition Documentation

#define DEBUG_TYPE   "tsan"

Definition at line 22 of file ThreadSanitizer.cpp.

Function Documentation

static Function* checkInterfaceFunction ( Constant FuncOrBitcast)
static

Definition at line 136 of file ThreadSanitizer.cpp.

References llvm::Value::dump(), F(), and llvm::report_fatal_error().

static ConstantInt* createFailOrdering ( IRBuilder<> *  IRB,
AtomicOrdering  ord 
)
static
static ConstantInt* createOrdering ( IRBuilder<> *  IRB,
AtomicOrdering  ord 
)
static
static bool isAtomic ( Instruction I)
static

Definition at line 308 of file ThreadSanitizer.cpp.

References llvm::CrossThread, and LI.

Referenced by llvm::AssemblyWriter::printInstruction(), and WriteInstruction().

static bool isVtableAccess ( Instruction I)
static
STATISTIC ( NumInstrumentedReads  ,
"Number of instrumented reads"   
)
STATISTIC ( NumInstrumentedWrites  ,
"Number of instrumented writes"   
)
STATISTIC ( NumOmittedReadsBeforeWrite  ,
"Number of reads ignored due to following writes"   
)
STATISTIC ( NumAccessesWithBadSize  ,
"Number of accesses with bad size"   
)
STATISTIC ( NumInstrumentedVtableWrites  ,
"Number of vtable ptr writes"   
)
STATISTIC ( NumInstrumentedVtableReads  ,
"Number of vtable ptr reads"   
)
STATISTIC ( NumOmittedReadsFromConstantGlobals  ,
"Number of reads from constant globals  
)
STATISTIC ( NumOmittedReadsFromVtable  ,
"Number of vtable reads"   
)

Variable Documentation

cl::opt<std::string> ClBlacklistFile("tsan-blacklist", cl::desc("Blacklist file"), cl::Hidden)
static
cl::opt<bool> ClInstrumentAtomics("tsan-instrument-atomics", cl::init(true), cl::desc("Instrument atomics"), cl::Hidden)
static
cl::opt<bool> ClInstrumentFuncEntryExit("tsan-instrument-func-entry-exit", cl::init(true), cl::desc("Instrument function entry and exit"), cl::Hidden)
static
cl::opt<bool> ClInstrumentMemIntrinsics("tsan-instrument-memintrinsics", cl::init(true), cl::desc("Instrument memintrinsics (memset/memcpy/memmove)"), cl::Hidden)
static
cl::opt<bool> ClInstrumentMemoryAccesses("tsan-instrument-memory-accesses", cl::init(true), cl::desc("Instrument memory accesses"), cl::Hidden)
static