LLVM: llvm::ConnectedVNInfoEqClasses Class Reference (original) (raw)

ConnectedVNInfoEqClasses - Helper class that can divide VNInfos in a LiveInterval into equivalence clases of connected components. More...

#include "[llvm/CodeGen/LiveInterval.h](LiveInterval%5F8h%5Fsource.html)"

Public Member Functions
ConnectedVNInfoEqClasses (LiveIntervals &lis)
LLVM_ABI unsigned Classify (const LiveRange &LR)
Classify the values in LR into connected components.
unsigned getEqClass (const VNInfo *VNI) const
getEqClass - Classify creates equivalence classes numbered 0..N.
LLVM_ABI void Distribute (LiveInterval &LI, LiveInterval *LIV[], MachineRegisterInfo &MRI)
Distribute values in LI into a separate LiveIntervals for each connected component.

Detailed Description

ConnectedVNInfoEqClasses - Helper class that can divide VNInfos in a LiveInterval into equivalence clases of connected components.

A LiveInterval that has multiple connected components can be broken into multiple LiveIntervals.

Given a LiveInterval that may have multiple connected components, run:

unsigned numComps = ConEQ.Classify(LI); if (numComps > 1) { // allocate numComps-1 new LiveIntervals into LIS[1..] ConEQ.Distribute(LIS); }

Definition at line 1019 of file LiveInterval.h.

Constructor & Destructor Documentation

llvm::ConnectedVNInfoEqClasses::ConnectedVNInfoEqClasses ( LiveIntervals & lis) inlineexplicit

Member Function Documentation

Classify()

Distribute()

Distribute values in LI into a separate LiveIntervals for each connected component.

LIV must have an empty LiveInterval for each additional connected component. The first connected component is left in LI.

Definition at line 1377 of file LiveInterval.cpp.

References assert(), llvm::SmallVectorImpl< T >::clear(), llvm::LiveInterval::createSubRange(), llvm::SmallVectorTemplateCommon< T, typename >::data(), llvm::VNInfo::def, llvm::DistributeRange(), getEqClass(), llvm::LiveRange::getVNInfoAt(), llvm::LiveInterval::hasSubRanges(), I, llvm::VNInfo::isUnused(), llvm::make_early_inc_range(), MI, MRI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::LiveRange::Query(), llvm::LiveInterval::reg(), llvm::LiveInterval::removeEmptySubRanges(), llvm::SmallVectorImpl< T >::reserve(), llvm::SmallVectorImpl< T >::resize(), llvm::LiveInterval::subranges(), llvm::LiveQueryResult::valueDefined(), llvm::LiveQueryResult::valueIn(), and llvm::LiveQueryResult::valueOut().

Referenced by llvm::LiveIntervals::splitSeparateComponents().

getEqClass()


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