LLVM  6.0.0svn
Macros | Functions
SplitKit.cpp File Reference
#include "SplitKit.h"
#include "LiveRangeCalc.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/None.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/LiveInterval.h"
#include "llvm/CodeGen/LiveIntervalAnalysis.h"
#include "llvm/CodeGen/LiveRangeEdit.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/SlotIndexes.h"
#include "llvm/CodeGen/VirtRegMap.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/MC/LaneBitmask.h"
#include "llvm/Support/Allocator.h"
#include "llvm/Support/BlockFrequency.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetOpcodes.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetSubtargetInfo.h"
#include <algorithm>
#include <cassert>
#include <iterator>
#include <limits>
#include <tuple>
#include <utility>
Include dependency graph for SplitKit.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "regalloc"
 

Functions

 STATISTIC (NumFinished, "Number of splits finished")
 
 STATISTIC (NumSimple, "Number of splits that were simple")
 
 STATISTIC (NumCopies, "Number of copies inserted for splitting")
 
 STATISTIC (NumRemats, "Number of rematerialized defs for splitting")
 
 STATISTIC (NumRepairs, "Number of invalid live ranges repaired")
 
static bool removeDeadSegment (SlotIndex Def, LiveRange &LR)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "regalloc"

Definition at line 59 of file SplitKit.cpp.

Function Documentation

◆ removeDeadSegment()

static bool removeDeadSegment ( SlotIndex  Def,
LiveRange LR 
)
static

Definition at line 1224 of file SplitKit.cpp.

References llvm::MachineInstr::addRegisterDead(), llvm::LaneBitmask::all(), llvm::MachineInstr::allDefsAreDead(), assert(), B, llvm::LiveRange::clear(), llvm::LiveInterval::computeSubRangeUndefs(), llvm::dbgs(), llvm::RegState::Dead, DEBUG, llvm::VNInfo::def, E, llvm::SmallVectorBase::empty(), llvm::LiveRange::Segment::end, llvm::WebAssembly::End, llvm::LiveRangeCalc::extend(), llvm::LiveRangeEdit::get(), llvm::LaneBitmask::getAll(), llvm::SlotIndex::getDeadSlot(), llvm::LiveIntervals::getInterval(), llvm::VirtRegMap::getMachineFunction(), llvm::LiveIntervals::getMBBEndIdx(), llvm::LiveIntervals::getMBBFromIndex(), llvm::SlotIndex::getNextSlot(), llvm::MachineBasicBlock::getNumber(), llvm::MachineInstr::getParent(), llvm::LiveRangeEdit::getParent(), llvm::MachineOperand::getParent(), llvm::SlotIndex::getPrevSlot(), llvm::SlotIndex::getRegSlot(), llvm::LiveRange::getSegmentContaining(), llvm::LiveIntervals::getSlotIndexes(), llvm::MachineOperand::getSubReg(), llvm::LiveIntervals::getVNInfoAllocator(), llvm::LiveInterval::hasSubRanges(), I, llvm::MachineInstr::isDebugValue(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isEarlyClobber(), llvm::VNInfo::isPHIDef(), llvm::MachineOperand::isUndef(), llvm::VNInfo::isUnused(), llvm::MachineOperand::isUse(), llvm::LiveRange::liveAt(), llvm::IntervalMap< KeyT, ValT, N, Traits >::lookup(), MI, MRI, N, llvm::None, llvm::RISCVFenceField::O, P, llvm::MachineBasicBlock::predecessors(), llvm::X86II::PS, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::LiveInterval::reg, llvm::LiveInterval::removeEmptySubRanges(), llvm::LiveRange::removeSegment(), llvm::LiveRangeCalc::reset(), llvm::LiveRange::segments, llvm::MachineOperand::setReg(), llvm::LiveInterval::subranges(), llvm::LiveRange::Segment::valno, and llvm::LiveRange::valnos.

◆ STATISTIC() [1/5]

STATISTIC ( NumFinished  ,
"Number of splits finished"   
)

◆ STATISTIC() [2/5]

STATISTIC ( NumSimple  ,
"Number of splits that were simple"   
)

◆ STATISTIC() [3/5]

STATISTIC ( NumCopies  ,
"Number of copies inserted for splitting"   
)

◆ STATISTIC() [4/5]

STATISTIC ( NumRemats  ,
"Number of rematerialized defs for splitting"   
)

◆ STATISTIC() [5/5]

STATISTIC ( NumRepairs  ,
"Number of invalid live ranges repaired"   
)