LLVM 17.0.0git
Macros | Functions | Variables
MemProfiler.cpp File Reference
#include "llvm/Transforms/Instrumentation/MemProfiler.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "memprof"
 

Functions

 STATISTIC (NumInstrumentedReads, "Number of instrumented reads")
 
 STATISTIC (NumInstrumentedWrites, "Number of instrumented writes")
 
 STATISTIC (NumSkippedStackReads, "Number of non-instrumented stack reads")
 
 STATISTIC (NumSkippedStackWrites, "Number of non-instrumented stack writes")
 
void createProfileFileNameVar (Module &M)
 

Variables

constexpr int LLVM_MEM_PROFILER_VERSION = 1
 
constexpr uint64_t DefaultShadowGranularity = 64
 
constexpr uint64_t DefaultShadowScale = 3
 
constexpr char MemProfModuleCtorName [] = "memprof.module_ctor"
 
constexpr uint64_t MemProfCtorAndDtorPriority = 1
 
constexpr uint64_t MemProfEmscriptenCtorAndDtorPriority = 50
 
constexpr char MemProfInitName [] = "__memprof_init"
 
constexpr char MemProfVersionCheckNamePrefix []
 
constexpr char MemProfShadowMemoryDynamicAddress []
 
constexpr char MemProfFilenameVar [] = "__memprof_profile_filename"
 
static cl::opt< boolClInsertVersionCheck ("memprof-guard-against-version-mismatch", cl::desc("Guard against compiler/runtime version mismatch."), cl::Hidden, cl::init(true))
 
static cl::opt< boolClInstrumentReads ("memprof-instrument-reads", cl::desc("instrument read instructions"), cl::Hidden, cl::init(true))
 
static cl::opt< boolClInstrumentWrites ("memprof-instrument-writes", cl::desc("instrument write instructions"), cl::Hidden, cl::init(true))
 
static cl::opt< boolClInstrumentAtomics ("memprof-instrument-atomics", cl::desc("instrument atomic instructions (rmw, cmpxchg)"), cl::Hidden, cl::init(true))
 
static cl::opt< boolClUseCalls ("memprof-use-callbacks", cl::desc("Use callbacks instead of inline instrumentation sequences."), cl::Hidden, cl::init(false))
 
static cl::opt< std::string > ClMemoryAccessCallbackPrefix ("memprof-memory-access-callback-prefix", cl::desc("Prefix for memory access callbacks"), cl::Hidden, cl::init("__memprof_"))
 
static cl::opt< int > ClMappingScale ("memprof-mapping-scale", cl::desc("scale of memprof shadow mapping"), cl::Hidden, cl::init(DefaultShadowScale))
 
static cl::opt< int > ClMappingGranularity ("memprof-mapping-granularity", cl::desc("granularity of memprof shadow mapping"), cl::Hidden, cl::init(DefaultShadowGranularity))
 
static cl::opt< boolClStack ("memprof-instrument-stack", cl::desc("Instrument scalar stack variables"), cl::Hidden, cl::init(false))
 
static cl::opt< int > ClDebug ("memprof-debug", cl::desc("debug"), cl::Hidden, cl::init(0))
 
static cl::opt< std::string > ClDebugFunc ("memprof-debug-func", cl::Hidden, cl::desc("Debug func"))
 
static cl::opt< int > ClDebugMin ("memprof-debug-min", cl::desc("Debug min inst"), cl::Hidden, cl::init(-1))
 
static cl::opt< int > ClDebugMax ("memprof-debug-max", cl::desc("Debug max inst"), cl::Hidden, cl::init(-1))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "memprof"

Definition at line 41 of file MemProfiler.cpp.

Function Documentation

◆ createProfileFileNameVar()

void createProfileFileNameVar ( Module M)

◆ STATISTIC() [1/4]

STATISTIC ( NumInstrumentedReads  ,
"Number of instrumented reads"   
)

◆ STATISTIC() [2/4]

STATISTIC ( NumInstrumentedWrites  ,
"Number of instrumented writes"   
)

◆ STATISTIC() [3/4]

STATISTIC ( NumSkippedStackReads  ,
"Number of non-instrumented stack reads"   
)

◆ STATISTIC() [4/4]

STATISTIC ( NumSkippedStackWrites  ,
"Number of non-instrumented stack writes"   
)

Variable Documentation

◆ ClDebug

cl::opt< int > ClDebug("memprof-debug", cl::desc("debug"), cl::Hidden, cl::init(0)) ( "memprof-debug"  ,
cl::desc("debug")  ,
cl::Hidden  ,
cl::init(0)   
)
static

◆ ClDebugFunc

cl::opt< std::string > ClDebugFunc("memprof-debug-func", cl::Hidden, cl::desc("Debug func")) ( "memprof-debug-func"  ,
cl::Hidden  ,
cl::desc("Debug func")   
)
static

◆ ClDebugMax

cl::opt< int > ClDebugMax("memprof-debug-max", cl::desc("Debug max inst"), cl::Hidden, cl::init(-1)) ( "memprof-debug-max"  ,
cl::desc("Debug max inst")  ,
cl::Hidden  ,
cl::init(-1)   
)
static

◆ ClDebugMin

cl::opt< int > ClDebugMin("memprof-debug-min", cl::desc("Debug min inst"), cl::Hidden, cl::init(-1)) ( "memprof-debug-min"  ,
cl::desc("Debug min inst")  ,
cl::Hidden  ,
cl::init(-1)   
)
static

◆ ClInsertVersionCheck

cl::opt< bool > ClInsertVersionCheck("memprof-guard-against-version-mismatch", cl::desc("Guard against compiler/runtime version mismatch."), cl::Hidden, cl::init(true)) ( "memprof-guard-against-version-mismatch"  ,
cl::desc("Guard against compiler/runtime version mismatch.")  ,
cl::Hidden  ,
cl::init(true  
)
static

◆ ClInstrumentAtomics

cl::opt< bool > ClInstrumentAtomics("memprof-instrument-atomics", cl::desc("instrument atomic instructions (rmw, cmpxchg)"), cl::Hidden, cl::init(true)) ( "memprof-instrument-atomics"  ,
cl::desc("instrument atomic instructions (rmw, cmpxchg)")  ,
cl::Hidden  ,
cl::init(true  
)
static

◆ ClInstrumentReads

cl::opt< bool > ClInstrumentReads("memprof-instrument-reads", cl::desc("instrument read instructions"), cl::Hidden, cl::init(true)) ( "memprof-instrument-reads"  ,
cl::desc("instrument read instructions")  ,
cl::Hidden  ,
cl::init(true  
)
static

◆ ClInstrumentWrites

cl::opt< bool > ClInstrumentWrites("memprof-instrument-writes", cl::desc("instrument write instructions"), cl::Hidden, cl::init(true)) ( "memprof-instrument-writes"  ,
cl::desc("instrument write instructions")  ,
cl::Hidden  ,
cl::init(true  
)
static

◆ ClMappingGranularity

cl::opt< int > ClMappingGranularity("memprof-mapping-granularity", cl::desc("granularity of memprof shadow mapping"), cl::Hidden, cl::init(DefaultShadowGranularity)) ( "memprof-mapping-granularity"  ,
cl::desc("granularity of memprof shadow mapping")  ,
cl::Hidden  ,
cl::init(DefaultShadowGranularity  
)
static

◆ ClMappingScale

cl::opt< int > ClMappingScale("memprof-mapping-scale", cl::desc("scale of memprof shadow mapping"), cl::Hidden, cl::init(DefaultShadowScale)) ( "memprof-mapping-scale"  ,
cl::desc("scale of memprof shadow mapping")  ,
cl::Hidden  ,
cl::init(DefaultShadowScale  
)
static

◆ ClMemoryAccessCallbackPrefix

cl::opt< std::string > ClMemoryAccessCallbackPrefix("memprof-memory-access-callback-prefix", cl::desc("Prefix for memory access callbacks"), cl::Hidden, cl::init("__memprof_")) ( "memprof-memory-access-callback-prefix"  ,
cl::desc("Prefix for memory access callbacks")  ,
cl::Hidden  ,
cl::init("__memprof_")   
)
static

◆ ClStack

cl::opt< bool > ClStack("memprof-instrument-stack", cl::desc("Instrument scalar stack variables"), cl::Hidden, cl::init(false)) ( "memprof-instrument-stack"  ,
cl::desc("Instrument scalar stack variables")  ,
cl::Hidden  ,
cl::init(false)   
)
static

◆ ClUseCalls

cl::opt< bool > ClUseCalls("memprof-use-callbacks", cl::desc("Use callbacks instead of inline instrumentation sequences."), cl::Hidden, cl::init(false)) ( "memprof-use-callbacks"  ,
cl::desc("Use callbacks instead of inline instrumentation sequences.")  ,
cl::Hidden  ,
cl::init(false)   
)
static

◆ DefaultShadowGranularity

constexpr uint64_t DefaultShadowGranularity = 64
constexpr

Definition at line 46 of file MemProfiler.cpp.

◆ DefaultShadowScale

constexpr uint64_t DefaultShadowScale = 3
constexpr

Definition at line 49 of file MemProfiler.cpp.

◆ LLVM_MEM_PROFILER_VERSION

constexpr int LLVM_MEM_PROFILER_VERSION = 1
constexpr

Definition at line 43 of file MemProfiler.cpp.

◆ MemProfCtorAndDtorPriority

constexpr uint64_t MemProfCtorAndDtorPriority = 1
constexpr

Definition at line 52 of file MemProfiler.cpp.

◆ MemProfEmscriptenCtorAndDtorPriority

constexpr uint64_t MemProfEmscriptenCtorAndDtorPriority = 50
constexpr

Definition at line 54 of file MemProfiler.cpp.

◆ MemProfFilenameVar

constexpr char MemProfFilenameVar[] = "__memprof_profile_filename"
constexpr

Definition at line 62 of file MemProfiler.cpp.

Referenced by createProfileFileNameVar().

◆ MemProfInitName

constexpr char MemProfInitName[] = "__memprof_init"
constexpr

Definition at line 55 of file MemProfiler.cpp.

◆ MemProfModuleCtorName

constexpr char MemProfModuleCtorName[] = "memprof.module_ctor"
constexpr

Definition at line 51 of file MemProfiler.cpp.

◆ MemProfShadowMemoryDynamicAddress

constexpr char MemProfShadowMemoryDynamicAddress[]
constexpr
Initial value:
=
"__memprof_shadow_memory_dynamic_address"

Definition at line 59 of file MemProfiler.cpp.

◆ MemProfVersionCheckNamePrefix

constexpr char MemProfVersionCheckNamePrefix[]
constexpr
Initial value:
=
"__memprof_version_mismatch_check_v"

Definition at line 56 of file MemProfiler.cpp.