|
LLVM 23.0.0git
|
The base instrumentation opportunity class for instruction opportunities. More...
#include "llvm/Transforms/IPO/Instrumentor.h"
Public Member Functions | |
| virtual | ~InstructionIO () |
| InstructionIO (InstrumentationLocation::KindTy Kind) | |
| Construct an instruction opportunity. | |
| ArrayRef< unsigned > | getAllOpcodes () const override |
| Get all opcodes for this instrumentation opportunity (override). | |
| virtual StringRef | getName () const override |
| Get the name of the instruction. | |
| Public Member Functions inherited from llvm::instrumentor::InstrumentationOpportunity | |
| virtual | ~InstrumentationOpportunity () |
| InstrumentationOpportunity (const InstrumentationLocation IP) | |
Construct an opportunity with location IP. | |
| virtual Value * | instrument (Value *&V, bool &Changed, InstrumentationConfig &IConf, InstrumentorIRBuilderTy &IIRB, InstrumentationCaches &ICaches) |
| } | |
| virtual Type * | getRetTy (LLVMContext &Ctx) const |
| Get the return type for the instrumentation runtime function. | |
| InstrumentationLocation::KindTy | getLocationKind () const |
| Get the location kind of the instrumentation opportunity. | |
| void | addCommonArgs (InstrumentationConfig &IConf, LLVMContext &Ctx, bool PassId) |
| } | |
Static Public Member Functions | |
| static constexpr size_t | getNumOpcodes () |
| Get the number of opcodes. | |
| Static Public Member Functions inherited from llvm::instrumentor::InstrumentationOpportunity | |
| static Value * | forceCast (Value &V, Type &Ty, InstrumentorIRBuilderTy &IIRB) |
| Helpers to cast values, pass them to the runtime, and replace them. | |
| static Value * | getValue (Value &V, Type &Ty, InstrumentationConfig &IConf, InstrumentorIRBuilderTy &IIRB) |
| static Value * | replaceValue (Value &V, Value &NewV, InstrumentationConfig &IConf, InstrumentorIRBuilderTy &IIRB) |
| static Value * | getIdPre (Value &V, Type &Ty, InstrumentationConfig &IConf, InstrumentorIRBuilderTy &IIRB) |
| Get the opportunity identifier for the pre and post positions. | |
| static Value * | getIdPost (Value &V, Type &Ty, InstrumentationConfig &IConf, InstrumentorIRBuilderTy &IIRB) |
| static int32_t | getIdFromEpoch (uint32_t CurrentEpoch) |
| } | |
Static Public Attributes | |
| static constexpr std::array< unsigned, sizeof...(Opcodes)> | OpcodesArray |
Additional Inherited Members | |
| Public Types inherited from llvm::instrumentor::InstrumentationOpportunity | |
| using | CallbackTy = std::function<bool(Value &)> |
| An optional callback that takes the value that is about to be instrumented and can return false if it should be skipped. | |
| Public Attributes inherited from llvm::instrumentor::InstrumentationOpportunity | |
| InstrumentationLocation | IP |
| The instrumentation location of the opportunity. | |
| SmallVector< IRTArg > | IRTArgs |
| The list of possible arguments for the instrumentation runtime function. | |
| bool | Enabled = true |
| Whether the opportunity is enabled. | |
| StringRef | Filter |
| A filter expression to be matched against runtime property values. | |
| CallbackTy | CB = nullptr |
The base instrumentation opportunity class for instruction opportunities.
Each instruction opportunity should inherit from this class and implement the virtual class members. If multiple opcodes are provided, all of them are instrumented using the same logic, and a name must be explicitly provided by overriding getName().
Definition at line 587 of file Instrumentor.h.
|
inlinevirtual |
Definition at line 588 of file Instrumentor.h.
|
inline |
Construct an instruction opportunity.
Definition at line 591 of file Instrumentor.h.
References llvm::instrumentor::InstrumentationOpportunity::InstrumentationOpportunity().
|
inlineoverridevirtual |
Get all opcodes for this instrumentation opportunity (override).
Reimplemented from llvm::instrumentor::InstrumentationOpportunity.
Definition at line 601 of file Instrumentor.h.
References OpcodesArray.
|
inlineoverridevirtual |
Get the name of the instruction.
For single-opcode IOs, this defaults to the opcode name. For multi-opcode IOs, getName() MUST be overridden to provide an explicit name identifying the whole group of opcodes.
Implements llvm::instrumentor::InstrumentationOpportunity.
Reimplemented in llvm::instrumentor::CastIO, and llvm::instrumentor::NumericIO.
Definition at line 609 of file Instrumentor.h.
References assert(), llvm::Instruction::getOpcodeName(), and OpcodesArray.
|
inlinestaticconstexpr |
|
staticconstexpr |
Definition at line 597 of file Instrumentor.h.
Referenced by getAllOpcodes(), getName(), and getNumOpcodes().