LLVM  3.7.0
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/Analysis/CaptureTracking.h"
#include "llvm/Analysis/ValueTracking.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 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")
 
 STATISTIC (NumOmittedNonCaptured,"Number of accesses ignored due to capturing")
 
static bool isVtableAccess (Instruction *I)
 
static bool isAtomic (Instruction *I)
 
static ConstantIntcreateOrdering (IRBuilder<> *IRB, AtomicOrdering ord)
 

Variables

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)
 
static const char *const kTsanModuleCtorName = "tsan.module_ctor"
 
static const char *const kTsanInitName = "__tsan_init"
 

Macro Definition Documentation

#define DEBUG_TYPE   "tsan"

Definition at line 48 of file ThreadSanitizer.cpp.

Function Documentation

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

Definition at line 320 of file ThreadSanitizer.cpp.

References llvm::CrossThread, and SI.

Referenced by 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"   
)
STATISTIC ( NumOmittedNonCaptured  ,
"Number of accesses ignored due to capturing"   
)

Variable Documentation

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
const char* const kTsanInitName = "__tsan_init"
static

Definition at line 76 of file ThreadSanitizer.cpp.

const char* const kTsanModuleCtorName = "tsan.module_ctor"
static

Definition at line 75 of file ThreadSanitizer.cpp.