LLVM
15.0.0git
|
#include "llvm/Transforms/Instrumentation/InstrProfiling.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Triple.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Analysis/BlockFrequencyInfo.h"
#include "llvm/Analysis/BranchProbabilityInfo.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DIBuilder.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/ProfileData/InstrProfCorrelator.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"
#include "llvm/Transforms/Utils/SSAUpdater.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <string>
#include "llvm/ProfileData/InstrProfData.inc"
Go to the source code of this file.
Namespaces | |
llvm | |
This is an optimization pass for GlobalISel generic memory operations. | |
Macros | |
#define | DEBUG_TYPE "instrprof" |
#define | VALUE_PROF_FUNC_PARAM(ParamType, ParamName, ParamLLVMType) ParamLLVMType |
#define | INSTR_PROF_DATA(Type, LLVMType, Name, Init) LLVMType, |
#define | INSTR_PROF_DATA(Type, LLVMType, Name, Init) Init, |
#define | INSTR_PROF_MIN_VAL_COUNTS 10 |
#define | INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Init) LLVMType, |
Functions | |
INITIALIZE_PASS_BEGIN (InstrProfilingLegacyPass, "instrprof", "Frontend instrumentation-based coverage lowering.", false, false) INITIALIZE_PASS_END(InstrProfilingLegacyPass | |
static bool | needsRuntimeHookUnconditionally (const Triple &TT) |
static bool | containsProfilingIntrinsics (Module &M) |
Check if the module contains uses of any profiling intrinsics. More... | |
static FunctionCallee | getOrInsertValueProfilingCall (Module &M, const TargetLibraryInfo &TLI, ValueProfilingCallType CallType=ValueProfilingCallType::Default) |
static std::string | getVarName (InstrProfInstBase *Inc, StringRef Prefix, bool &Renamed) |
Get the name of a profiling variable for a particular function. More... | |
static uint64_t | getIntModuleFlagOrZero (const Module &M, StringRef Flag) |
static bool | enablesValueProfiling (const Module &M) |
static bool | profDataReferencedByCode (const Module &M) |
static bool | shouldRecordFunctionAddr (Function *F) |
static bool | needsRuntimeRegistrationOfSectionRange (const Triple &TT) |
Variables | |
cl::opt< bool > | llvm::DebugInfoCorrelate ("debug-info-correlate", cl::desc("Use debug info to correlate profiles."), cl::init(false)) |
instrprof | |
Frontend instrumentation based coverage | lowering |
Frontend instrumentation based coverage | false |
#define DEBUG_TYPE "instrprof" |
Definition at line 59 of file InstrProfiling.cpp.
#define INSTR_PROF_DATA | ( | Type, | |
LLVMType, | |||
Name, | |||
Init | |||
) | LLVMType, |
#define INSTR_PROF_DATA | ( | Type, | |
LLVMType, | |||
Name, | |||
Init | |||
) | Init, |
#define INSTR_PROF_MIN_VAL_COUNTS 10 |
#define INSTR_PROF_VALUE_NODE | ( | Type, | |
LLVMType, | |||
Name, | |||
Init | |||
) | LLVMType, |
#define VALUE_PROF_FUNC_PARAM | ( | ParamType, | |
ParamName, | |||
ParamLLVMType | |||
) | ParamLLVMType |
|
static |
Check if the module contains uses of any profiling intrinsics.
Definition at line 548 of file InstrProfiling.cpp.
References F, llvm::Intrinsic::getName(), and M.
Referenced by llvm::InstrProfiling::run().
Definition at line 816 of file InstrProfiling.cpp.
References getIntModuleFlagOrZero(), llvm::isIRPGOFlagSet(), and M.
Referenced by profDataReferencedByCode().
Definition at line 806 of file InstrProfiling.cpp.
References M.
Referenced by enablesValueProfiling().
|
static |
Definition at line 621 of file InstrProfiling.cpp.
References llvm::AArch64CC::AL, assert(), llvm::TargetStackID::Default, llvm::FunctionType::get(), llvm::TargetLibraryInfo::getExtAttrForI32Param(), llvm::getInstrProfValueProfFuncName(), llvm::getInstrProfValueProfMemOpFuncName(), llvm::Type::getVoidTy(), M, and llvm::makeArrayRef().
|
static |
Get the name of a profiling variable for a particular function.
Definition at line 787 of file InstrProfiling.cpp.
References llvm::canRenameComdatFunc(), F, llvm::InstrProfInstBase::getHash(), llvm::getInstrProfNameVarPrefix(), llvm::Value::getName(), llvm::InstrProfInstBase::getName(), llvm::Instruction::getParent(), llvm::BasicBlock::getParent(), llvm::ConstantInt::getZExtValue(), llvm::isIRPGOFlagSet(), M, llvm::cl::Prefix, llvm::StringRef::size(), llvm::StringRef::substr(), and llvm::dwarf::toStringRef().
INITIALIZE_PASS_BEGIN | ( | InstrProfilingLegacyPass | , |
"instrprof" | , | ||
"Frontend instrumentation-based coverage lowering." | , | ||
false | , | ||
false | |||
) |
Definition at line 539 of file InstrProfiling.cpp.
Referenced by llvm::InstrProfiling::run().
Definition at line 863 of file InstrProfiling.cpp.
Definition at line 822 of file InstrProfiling.cpp.
References enablesValueProfiling(), and M.
Referenced by shouldRecordFunctionAddr().
|
inlinestatic |
Definition at line 826 of file InstrProfiling.cpp.
References F, and profDataReferencedByCode().
Frontend instrumentation based coverage false |
Definition at line 448 of file InstrProfiling.cpp.
instrprof |
Definition at line 447 of file InstrProfiling.cpp.
Frontend instrumentation based coverage lowering |
Definition at line 448 of file InstrProfiling.cpp.