LLVM 17.0.0git
|
A wrapper class to simplify modification of SwitchInst cases along with their prof branch_weights metadata. More...
#include "llvm/IR/Instructions.h"
Public Types | |
using | CaseWeightOpt = std::optional< uint32_t > |
Public Member Functions | |
SwitchInst * | operator-> () |
SwitchInst & | operator* () |
operator SwitchInst * () | |
SwitchInstProfUpdateWrapper (SwitchInst &SI) | |
~SwitchInstProfUpdateWrapper () | |
SwitchInst::CaseIt | removeCase (SwitchInst::CaseIt I) |
Delegate the call to the underlying SwitchInst::removeCase() and remove correspondent branch weight. | |
void | addCase (ConstantInt *OnVal, BasicBlock *Dest, CaseWeightOpt W) |
Delegate the call to the underlying SwitchInst::addCase() and set the specified branch weight for the added case. | |
SymbolTableList< Instruction >::iterator | eraseFromParent () |
Delegate the call to the underlying SwitchInst::eraseFromParent() and mark this object to not touch the underlying SwitchInst in destructor. | |
void | setSuccessorWeight (unsigned idx, CaseWeightOpt W) |
CaseWeightOpt | getSuccessorWeight (unsigned idx) |
Static Public Member Functions | |
static CaseWeightOpt | getSuccessorWeight (const SwitchInst &SI, unsigned idx) |
Protected Member Functions | |
MDNode * | buildProfBranchWeightsMD () |
void | init () |
A wrapper class to simplify modification of SwitchInst cases along with their prof branch_weights metadata.
Definition at line 3656 of file Instructions.h.
using llvm::SwitchInstProfUpdateWrapper::CaseWeightOpt = std::optional<uint32_t> |
Definition at line 3667 of file Instructions.h.
|
inline |
Definition at line 3672 of file Instructions.h.
|
inline |
Definition at line 3674 of file Instructions.h.
References buildProfBranchWeightsMD(), and SI.
void SwitchInstProfUpdateWrapper::addCase | ( | ConstantInt * | OnVal, |
BasicBlock * | Dest, | ||
SwitchInstProfUpdateWrapper::CaseWeightOpt | W | ||
) |
Delegate the call to the underlying SwitchInst::addCase() and set the specified branch weight for the added case.
Definition at line 4724 of file Instructions.cpp.
Referenced by unswitchTrivialSwitch().
|
protected |
Definition at line 4676 of file Instructions.cpp.
References llvm::all_of(), assert(), llvm::MDBuilder::createBranchWeights(), and SI.
Referenced by ~SwitchInstProfUpdateWrapper().
SymbolTableList< Instruction >::iterator SwitchInstProfUpdateWrapper::eraseFromParent | ( | ) |
Delegate the call to the underlying SwitchInst::eraseFromParent() and mark this object to not touch the underlying SwitchInst in destructor.
Definition at line 4743 of file Instructions.cpp.
References SI.
Referenced by unswitchTrivialSwitch().
|
static |
Definition at line 4776 of file Instructions.cpp.
References llvm::getBranchWeightMDNode(), and SI.
SwitchInstProfUpdateWrapper::CaseWeightOpt SwitchInstProfUpdateWrapper::getSuccessorWeight | ( | unsigned | idx | ) |
Definition at line 4752 of file Instructions.cpp.
Referenced by unswitchTrivialSwitch().
|
protected |
Definition at line 4693 of file Instructions.cpp.
References llvm::extractBranchWeights(), llvm::getBranchWeightMDNode(), llvm::MDNode::getNumOperands(), llvm_unreachable, and SI.
Referenced by SwitchInstProfUpdateWrapper().
|
inline |
Definition at line 3670 of file Instructions.h.
References SI.
|
inline |
Definition at line 3669 of file Instructions.h.
References SI.
|
inline |
Definition at line 3668 of file Instructions.h.
References SI.
SwitchInst::CaseIt SwitchInstProfUpdateWrapper::removeCase | ( | SwitchInst::CaseIt | I | ) |
Delegate the call to the underlying SwitchInst::removeCase() and remove correspondent branch weight.
Definition at line 4710 of file Instructions.cpp.
References assert(), I, and SI.
Referenced by eliminateDeadSwitchCases(), and unswitchTrivialSwitch().
void SwitchInstProfUpdateWrapper::setSuccessorWeight | ( | unsigned | idx, |
SwitchInstProfUpdateWrapper::CaseWeightOpt | W | ||
) |
Definition at line 4758 of file Instructions.cpp.
References SI.
Referenced by unswitchTrivialSwitch().