LLVM 18.0.0git
Classes | Public Member Functions | List of all members
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 

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 182 of file BranchFolding.cpp.

References llvm::getEHScopeMembership(), llvm::MachineFunction::getJumpTableInfo(), llvm::MachineJumpTableInfo::getJumpTables(), llvm::MachineFunction::getRegInfo(), I, MRI, llvm::MachineJumpTableInfo::RemoveJumpTable(), llvm::BitVector::set(), llvm::BitVector::size(), llvm::BitVector::test(), and llvm::TargetRegisterInfo::trackLivenessAfterRegAlloc().

Referenced by INITIALIZE_PASS().

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