Go to the source code of this file.
|
| 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 | shouldInstrumentReadWriteFromAddress (const Module *M, Value *Addr) |
|
static bool | isTsanAtomic (const Instruction *I) |
|
static ConstantInt * | createOrdering (IRBuilder<> *IRB, AtomicOrdering ord) |
|
|
static cl::opt< bool > | ClInstrumentMemoryAccesses ("tsan-instrument-memory-accesses", cl::init(true), cl::desc("Instrument memory accesses"), 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 > | ClHandleCxxExceptions ("tsan-handle-cxx-exceptions", cl::init(true), cl::desc("Handle C++ exceptions (insert cleanup blocks for unwinding)"), cl::Hidden) |
|
static cl::opt< bool > | ClInstrumentAtomics ("tsan-instrument-atomics", cl::init(true), cl::desc("Instrument atomics"), 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 > | ClDistinguishVolatile ("tsan-distinguish-volatile", cl::init(false), cl::desc("Emit special instrumentation for accesses to volatiles"), cl::Hidden) |
|
static cl::opt< bool > | ClInstrumentReadBeforeWrite ("tsan-instrument-read-before-write", cl::init(false), cl::desc("Do not eliminate read instrumentation for read-before-writes"), cl::Hidden) |
|
static cl::opt< bool > | ClCompoundReadBeforeWrite ("tsan-compound-read-before-write", cl::init(false), cl::desc("Emit special compound instrumentation for reads-before-writes"), cl::Hidden) |
|
const char | kTsanModuleCtorName [] = "tsan.module_ctor" |
|
const char | kTsanInitName [] = "__tsan_init" |
|
◆ DEBUG_TYPE
#define DEBUG_TYPE "tsan" |
◆ createOrdering()
◆ isTsanAtomic()
◆ isVtableAccess()
◆ shouldInstrumentReadWriteFromAddress()
◆ STATISTIC() [1/9]
STATISTIC |
( |
NumAccessesWithBadSize |
, |
|
|
"Number of accesses with bad size" |
|
|
) |
| |
◆ STATISTIC() [2/9]
STATISTIC |
( |
NumInstrumentedReads |
, |
|
|
"Number of instrumented reads" |
|
|
) |
| |
◆ STATISTIC() [3/9]
STATISTIC |
( |
NumInstrumentedVtableReads |
, |
|
|
"Number of vtable ptr reads" |
|
|
) |
| |
◆ STATISTIC() [4/9]
STATISTIC |
( |
NumInstrumentedVtableWrites |
, |
|
|
"Number of vtable ptr writes" |
|
|
) |
| |
◆ STATISTIC() [5/9]
STATISTIC |
( |
NumInstrumentedWrites |
, |
|
|
"Number of instrumented writes" |
|
|
) |
| |
◆ STATISTIC() [6/9]
STATISTIC |
( |
NumOmittedNonCaptured |
, |
|
|
"Number of accesses ignored due to capturing" |
|
|
) |
| |
◆ STATISTIC() [7/9]
STATISTIC |
( |
NumOmittedReadsBeforeWrite |
, |
|
|
"Number of reads ignored due to following writes" |
|
|
) |
| |
◆ STATISTIC() [8/9]
STATISTIC |
( |
NumOmittedReadsFromConstantGlobals |
, |
|
|
"Number of reads from constant globals" |
|
|
) |
| |
◆ STATISTIC() [9/9]
STATISTIC |
( |
NumOmittedReadsFromVtable |
, |
|
|
"Number of vtable reads" |
|
|
) |
| |
◆ ClCompoundReadBeforeWrite
cl::opt< bool > ClCompoundReadBeforeWrite("tsan-compound-read-before-write", cl::init(false), cl::desc("Emit special compound instrumentation for reads-before-writes"), cl::Hidden) |
( |
"tsan-compound-read-before-write" |
, |
|
|
cl::init(false) |
, |
|
|
cl::desc("Emit special compound instrumentation for reads-before-writes") |
, |
|
|
cl::Hidden |
|
|
) |
| |
|
static |
◆ ClDistinguishVolatile
◆ ClHandleCxxExceptions
◆ ClInstrumentAtomics
◆ ClInstrumentFuncEntryExit
◆ ClInstrumentMemIntrinsics
cl::opt< bool > ClInstrumentMemIntrinsics("tsan-instrument-memintrinsics", cl::init(true), cl::desc("Instrument memintrinsics (memset/memcpy/memmove)"), cl::Hidden) |
( |
"tsan-instrument-memintrinsics" |
, |
|
|
cl::init(true) |
, |
|
|
cl::desc("Instrument memintrinsics (memset/memcpy/memmove)") |
, |
|
|
cl::Hidden |
|
|
) |
| |
|
static |
◆ ClInstrumentMemoryAccesses
◆ ClInstrumentReadBeforeWrite
◆ kTsanInitName
◆ kTsanModuleCtorName
const char kTsanModuleCtorName[] = "tsan.module_ctor" |