LLVM API Documentation

LiveIntervalAnalysis.cpp File Reference

#include "llvm/CodeGen/LiveIntervalAnalysis.h"
#include "VirtRegMap.h"
#include "llvm/Value.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/LiveVariables.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/PseudoSourceValue.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/STLExtras.h"
#include <algorithm>
#include <cmath>

Include dependency graph for LiveIntervalAnalysis.cpp:

Go to the source code of this file.

Defines

#define DEBUG_TYPE   "liveintervals"

Functions

 STATISTIC (numIntervals,"Number of original intervals")
 STATISTIC (numFolds,"Number of loads/stores folded into instructions")
 STATISTIC (numSplits,"Number of intervals split")
static bool FilterFoldedOps (MachineInstr *MI, SmallVector< unsigned, 2 > &Ops, unsigned &MRInfo, SmallVector< unsigned, 2 > &FoldOps)

Variables

static cl::opt< bool > DisableReMat ("disable-rematerialization", cl::init(false), cl::Hidden)
static cl::opt< bool > SplitAtBB ("split-intervals-at-bb", cl::init(true), cl::Hidden)
static cl::opt< int > SplitLimit ("split-limit", cl::init(-1), cl::Hidden)
static cl::opt< bool > EnableAggressiveRemat ("aggressive-remat", cl::Hidden)
static cl::opt< bool > EnableFastSpilling ("fast-spill", cl::init(false), cl::Hidden)
static RegisterPass
< LiveIntervals > 
X ("liveintervals","Live Interval Analysis")


Define Documentation

#define DEBUG_TYPE   "liveintervals"

Definition at line 18 of file LiveIntervalAnalysis.cpp.


Function Documentation

static bool FilterFoldedOps ( MachineInstr *  MI,
SmallVector< unsigned, 2 > &  Ops,
unsigned &  MRInfo,
SmallVector< unsigned, 2 > &  FoldOps 
) [static]

STATISTIC ( numSplits  ,
"Number of intervals split"   
)

STATISTIC ( numFolds  ,
"Number of loads/stores folded into instructions"   
)

STATISTIC ( numIntervals  ,
"Number of original intervals"   
)


Variable Documentation

cl::opt<bool> DisableReMat("disable-rematerialization", cl::init(false), cl::Hidden) [static]

cl::opt<bool> EnableAggressiveRemat("aggressive-remat", cl::Hidden) [static]

cl::opt<bool> EnableFastSpilling("fast-spill", cl::init(false), cl::Hidden) [static]

bool HasDef

Definition at line 1444 of file LiveIntervalAnalysis.cpp.

bool HasUse

Definition at line 1443 of file LiveIntervalAnalysis.cpp.

Definition at line 1442 of file LiveIntervalAnalysis.cpp.

Referenced by llvm::MachineInstrBuilder::addConstantPoolIndex(), llvm::MachineInstrBuilder::addExternalSymbol(), llvm::MachineInstrBuilder::addFPImm(), llvm::MachineInstrBuilder::addFrameIndex(), llvm::addFrameReference(), llvm::MachineInstrBuilder::addGlobalAddress(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addJumpTableIndex(), llvm::MachineInstrBuilder::addMBB(), llvm::MachineInstrBuilder::addMemOperand(), llvm::MachineInstrBuilder::addReg(), llvm::RegScavenger::backward(), llvm::BuildMI(), llvm::MachineOperand::ChangeToRegister(), CleanupConstantGlobalUsers(), llvm::LiveIntervals::conflictsWithPhysRegDef(), llvm::LiveIntervals::conflictsWithPhysRegRef(), llvm::X86InstrInfo::convertToThreeAddress(), llvm::ARMInstrInfo::convertToThreeAddress(), llvm::AsmPrinter::doFinalization(), llvm::AsmPrinter::doInitialization(), llvm::SparcRegisterInfo::eliminateCallFramePseudoInstr(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::SPURegisterInfo::eliminateFrameIndex(), llvm::SparcRegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::MipsRegisterInfo::eliminateFrameIndex(), llvm::IA64RegisterInfo::eliminateFrameIndex(), llvm::ARMRegisterInfo::eliminateFrameIndex(), llvm::AlphaRegisterInfo::eliminateFrameIndex(), llvm::X86RegisterInfo::emitEpilogue(), llvm::X86RegisterInfo::emitPrologue(), emitSPUpdate(), llvm::Archive::findModuleDefiningSymbol(), llvm::RegScavenger::forward(), getConflictWeight(), llvm::EquivalenceClasses< ElemTy >::getLeaderValue(), llvm::EquivalenceClasses< ElemTy >::getOrInsertLeaderValue(), llvm::UniqueVector< llvm::BasicBlock * >::idFor(), isLiveInButUnusedBefore(), llvm::PPCRegisterInfo::lowerCRSpilling(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), mergeBaseUpdateLoadStore(), mergeBaseUpdateLSMultiple(), llvm::EquivalenceClasses< ElemTy >::operator=(), OptimizeOnceStoredGlobal(), llvm::MachineOperand::print(), llvm::LiveIntervals::releaseMemory(), llvm::X86InstrInfo::reMaterialize(), llvm::TargetInstrInfoImpl::reMaterialize(), llvm::ARMInstrInfo::reMaterialize(), llvm::FindUsedTypes::runOnModule(), and llvm::MachineOperand::setReg().

cl::opt<bool> SplitAtBB("split-intervals-at-bb", cl::init(true), cl::Hidden) [static]

cl::opt<int> SplitLimit("split-limit", cl::init(-1), cl::Hidden) [static]

RegisterPass<LiveIntervals> X("liveintervals","Live Interval Analysis") [static]