LLVM 22.0.0git
llvm::BranchFolder Class Reference

#include "CodeGen/BranchFolding.h"

Public Member Functions

 BranchFolder (bool DefaultEnableTailMerge, bool CommonHoist, MBFIWrapper &FreqInfo, const MachineBranchProbabilityInfo &ProbInfo, ProfileSummaryInfo *PSI, unsigned MinTailLength=0)
bool OptimizeFunction (MachineFunction &MF, const TargetInstrInfo *tii, const TargetRegisterInfo *tri, MachineLoopInfo *mli=nullptr, bool AfterPlacement=false)
 Perhaps branch folding, tail merging and other CFG optimizations on the given function.

Detailed Description

Definition at line 31 of file BranchFolding.h.

Constructor & Destructor Documentation

◆ BranchFolder()

BranchFolder::BranchFolder ( bool DefaultEnableTailMerge,
bool CommonHoist,
MBFIWrapper & FreqInfo,
const MachineBranchProbabilityInfo & ProbInfo,
ProfileSummaryInfo * PSI,
unsigned MinTailLength = 0 )
explicit

Member Function Documentation

◆ OptimizeFunction()

bool BranchFolder::OptimizeFunction ( MachineFunction & MF,
const TargetInstrInfo * tii,
const TargetRegisterInfo * tri,
MachineLoopInfo * mli = nullptr,
bool AfterPlacement = false )

Perhaps branch folding, tail merging and other CFG optimizations on the given function.

Block placement changes the layout and may create new tail merging opportunities.

Definition at line 205 of file BranchFolding.cpp.

References llvm::getEHScopeMembership(), llvm::MachineFunction::getJumpTableInfo(), llvm::MachineJumpTableInfo::getJumpTables(), llvm::MachineFunction::getRegInfo(), I, llvm::MachineJumpTableInfo::RemoveJumpTable(), llvm::BitVector::set(), llvm::BitVector::size(), TailMergeSize, llvm::BitVector::test(), and llvm::MachineRegisterInfo::tracksLiveness().

Referenced by INITIALIZE_PASS().


The documentation for this class was generated from the following files: