LLVM API Documentation
#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>
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 DEBUG_TYPE "liveintervals" |
Definition at line 18 of file LiveIntervalAnalysis.cpp.
| static bool FilterFoldedOps | ( | MachineInstr * | MI, | |
| SmallVector< unsigned, 2 > & | Ops, | |||
| unsigned & | MRInfo, | |||
| SmallVector< unsigned, 2 > & | FoldOps | |||
| ) | [static] |
FilterFoldedOps - Filter out two-address use operands. Return true if it finds any issue with the operands that ought to prevent folding.
Definition at line 1056 of file LiveIntervalAnalysis.cpp.
References llvm::MachineInstr::getDesc(), llvm::MachineInstr::getOperand(), llvm::TargetInstrDesc::getOperandConstraint(), llvm::MachineOperand::getSubReg(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isImplicit(), llvm::VirtRegMap::isMod, llvm::VirtRegMap::isModRef, llvm::VirtRegMap::isRef, llvm::SmallVectorImpl< T >::push_back(), llvm::SmallVectorImpl< T >::size(), and llvm::TOI::TIED_TO.
| STATISTIC | ( | numSplits | , | |
| "Number of intervals split" | ||||
| ) |
| STATISTIC | ( | numFolds | , | |
| "Number of loads/stores folded into instructions" | ||||
| ) |
| STATISTIC | ( | numIntervals | , | |
| "Number of original intervals" | ||||
| ) |
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] |
Referenced by llvm::LiveIntervals::addIntervalsForSpills().
| bool HasDef |
Definition at line 1444 of file LiveIntervalAnalysis.cpp.
| bool HasUse |
Definition at line 1443 of file LiveIntervalAnalysis.cpp.
Definition at line 1441 of file LiveIntervalAnalysis.cpp.
Referenced by llvm::AttrListPtr::addAttr(), llvm::LPPassManager::cloneBasicBlockSimpleAnalysis(), llvm::ComputeMaskedBits(), llvm::LPPassManager::deleteSimpleAnalysisValue(), llvm::FPPassManager::doFinalization(), llvm::FunctionPassManagerImpl::doFinalization(), llvm::FPPassManager::doInitialization(), llvm::FunctionPassManagerImpl::doInitialization(), llvm::FPPassManager::dumpPassStructure(), llvm::MPPassManager::dumpPassStructure(), llvm::LPPassManager::dumpPassStructure(), llvm::Interpreter::executeGEPOperation(), llvm::PIC16TargetLowering::ExpandFrameIndex(), llvm::ExtractElementInst::ExtractElementInst(), llvm::Linker::FindLib(), llvm::AttrListPtr::get(), getIndexedTypeInternal(), getNumOfConsecutiveZeros(), llvm::SelectionDAG::getShuffleScalarElt(), isVectorShift(), llvm::PMDataManager::populateInheritedAnalysis(), llvm::AttributeListImpl::Profile(), llvm::AttrListPtr::removeAttr(), RemoveFunctionFromSymbolTable(), llvm::PMDataManager::removeNotPreservedAnalysis(), llvm::LiveIntervals::ReplaceMachineInstrInMaps(), llvm::PassManagerImpl::run(), llvm::FunctionPassManagerImpl::run(), llvm::FPPassManager::runOnFunction(), llvm::LPPassManager::runOnFunction(), llvm::MPPassManager::runOnModule(), llvm::X86InstrInfo::unfoldMemoryOperand(), and llvm::SelectionDAGLowering::visitJumpTable().
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().
Referenced by llvm::LiveIntervals::addIntervalsForSpills().
cl::opt<int> SplitLimit("split-limit", cl::init(-1), cl::Hidden) [static] |
Referenced by llvm::LiveIntervals::addIntervalsForSpills().
RegisterPass<LiveIntervals> X("liveintervals","Live Interval Analysis") [static] |