class TailDuplicator
Declaration
class TailDuplicator { /* full declaration omitted */ };
Description
Utility class to perform tail duplication.
Declared at: llvm/include/llvm/CodeGen/TailDuplicator.h:38
Method Overview
- public bool canTailDuplicate(llvm::MachineBasicBlock * TailBB, llvm::MachineBasicBlock * PredBB)
- public void initMF(llvm::MachineFunction & MF, bool PreRegAlloc, const llvm::MachineBranchProbabilityInfo * MBPI, const llvm::MachineBlockFrequencyInfo * MBFI, llvm::ProfileSummaryInfo * PSI, bool LayoutMode, unsigned int TailDupSize = 0)
- public static bool isSimpleBB(llvm::MachineBasicBlock * TailBB)
- public bool shouldTailDuplicate(bool IsSimple, llvm::MachineBasicBlock & TailBB)
- public bool tailDuplicateAndUpdate(bool IsSimple, llvm::MachineBasicBlock * MBB, llvm::MachineBasicBlock * ForcedLayoutPred, SmallVectorImpl<llvm::MachineBasicBlock *> * DuplicatedPreds = nullptr, function_ref<void (llvm::MachineBasicBlock *)> * RemovalCallback = nullptr)
- public bool tailDuplicateBlocks()
Methods
¶bool canTailDuplicate(
llvm::MachineBasicBlock* TailBB,
llvm::MachineBasicBlock* PredBB)
bool canTailDuplicate(
llvm::MachineBasicBlock* TailBB,
llvm::MachineBasicBlock* PredBB)
Description
Returns true if TailBB can successfully be duplicated into PredBB
Declared at: llvm/include/llvm/CodeGen/TailDuplicator.h:81
Parameters
- llvm::MachineBasicBlock* TailBB
- llvm::MachineBasicBlock* PredBB
¶void initMF(
llvm::MachineFunction& MF,
bool PreRegAlloc,
const llvm::MachineBranchProbabilityInfo*
MBPI,
const llvm::MachineBlockFrequencyInfo* MBFI,
llvm::ProfileSummaryInfo* PSI,
bool LayoutMode,
unsigned int TailDupSize = 0)
void initMF(
llvm::MachineFunction& MF,
bool PreRegAlloc,
const llvm::MachineBranchProbabilityInfo*
MBPI,
const llvm::MachineBlockFrequencyInfo* MBFI,
llvm::ProfileSummaryInfo* PSI,
bool LayoutMode,
unsigned int TailDupSize = 0)
Description
Prepare to run on a specific machine function.
Declared at: llvm/include/llvm/CodeGen/TailDuplicator.h:70
Parameters
- llvm::MachineFunction& MF
- - Function that will be processed
- bool PreRegAlloc
- - true if used before register allocation
- const llvm::MachineBranchProbabilityInfo* MBPI
- - Branch Probability Info. Used to propagate correct probabilities when modifying the CFG.
- const llvm::MachineBlockFrequencyInfo* MBFI
- llvm::ProfileSummaryInfo* PSI
- bool LayoutMode
- - When true, don't use the existing layout to make decisions.
- unsigned int TailDupSize = 0
- - Maxmimum size of blocks to tail-duplicate. Zero default implies using the command line value TailDupSize.
¶static bool isSimpleBB(
llvm::MachineBasicBlock* TailBB)
static bool isSimpleBB(
llvm::MachineBasicBlock* TailBB)
Declared at: llvm/include/llvm/CodeGen/TailDuplicator.h:77
Parameters
- llvm::MachineBasicBlock* TailBB
¶bool shouldTailDuplicate(
bool IsSimple,
llvm::MachineBasicBlock& TailBB)
bool shouldTailDuplicate(
bool IsSimple,
llvm::MachineBasicBlock& TailBB)
Declared at: llvm/include/llvm/CodeGen/TailDuplicator.h:78
Parameters
- bool IsSimple
- llvm::MachineBasicBlock& TailBB
¶bool tailDuplicateAndUpdate(
bool IsSimple,
llvm::MachineBasicBlock* MBB,
llvm::MachineBasicBlock* ForcedLayoutPred,
SmallVectorImpl<llvm::MachineBasicBlock*>*
DuplicatedPreds = nullptr,
function_ref<void(llvm::MachineBasicBlock*)>*
RemovalCallback = nullptr)
bool tailDuplicateAndUpdate(
bool IsSimple,
llvm::MachineBasicBlock* MBB,
llvm::MachineBasicBlock* ForcedLayoutPred,
SmallVectorImpl<llvm::MachineBasicBlock*>*
DuplicatedPreds = nullptr,
function_ref<void(llvm::MachineBasicBlock*)>*
RemovalCallback = nullptr)
Description
Tail duplicate a single basic block into its predecessors, and then clean up. If \p DuplicatePreds is not null, it will be updated to contain the list of predecessors that received a copy of \p MBB. If \p RemovalCallback is non-null. It will be called before MBB is deleted.
Declared at: llvm/include/llvm/CodeGen/TailDuplicator.h:89
Parameters
- bool IsSimple
- llvm::MachineBasicBlock* MBB
- llvm::MachineBasicBlock* ForcedLayoutPred
- SmallVectorImpl<llvm::MachineBasicBlock*>* DuplicatedPreds = nullptr
- function_ref<void(llvm::MachineBasicBlock*)>* RemovalCallback = nullptr
¶bool tailDuplicateBlocks()
bool tailDuplicateBlocks()
Declared at: llvm/include/llvm/CodeGen/TailDuplicator.h:76