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)

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)

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)

Declared at: llvm/include/llvm/CodeGen/TailDuplicator.h:77

Parameters

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)

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()

Declared at: llvm/include/llvm/CodeGen/TailDuplicator.h:76