LLVM 17.0.0git
|
#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< bool > | ClInsertVersionCheck ("memprof-guard-against-version-mismatch", cl::desc("Guard against compiler/runtime version mismatch."), cl::Hidden, cl::init(true)) |
static cl::opt< bool > | ClInstrumentReads ("memprof-instrument-reads", cl::desc("instrument read instructions"), cl::Hidden, cl::init(true)) |
static cl::opt< bool > | ClInstrumentWrites ("memprof-instrument-writes", cl::desc("instrument write instructions"), cl::Hidden, cl::init(true)) |
static cl::opt< bool > | ClInstrumentAtomics ("memprof-instrument-atomics", cl::desc("instrument atomic instructions (rmw, cmpxchg)"), cl::Hidden, cl::init(true)) |
static cl::opt< bool > | ClUseCalls ("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< bool > | ClStack ("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)) |
#define DEBUG_TYPE "memprof" |
Definition at line 41 of file MemProfiler.cpp.
void createProfileFileNameVar | ( | Module & | M | ) |
Definition at line 450 of file MemProfiler.cpp.
References assert(), llvm::StringRef::empty(), llvm::GlobalValue::ExternalLinkage, llvm::MDString::getString(), llvm::ConstantDataArray::getString(), llvm::Value::getType(), MemProfFilenameVar, llvm::GlobalObject::setComdat(), llvm::GlobalValue::setLinkage(), and llvm::GlobalValue::WeakAnyLinkage.
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" | |||
) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
constexpr |
Definition at line 46 of file MemProfiler.cpp.
|
constexpr |
Definition at line 49 of file MemProfiler.cpp.
|
constexpr |
Definition at line 43 of file MemProfiler.cpp.
|
constexpr |
Definition at line 52 of file MemProfiler.cpp.
|
constexpr |
Definition at line 54 of file MemProfiler.cpp.
|
constexpr |
Definition at line 62 of file MemProfiler.cpp.
Referenced by createProfileFileNameVar().
|
constexpr |
Definition at line 55 of file MemProfiler.cpp.
|
constexpr |
Definition at line 51 of file MemProfiler.cpp.
|
constexpr |
Definition at line 59 of file MemProfiler.cpp.
|
constexpr |
Definition at line 56 of file MemProfiler.cpp.