|
LLVM
3.7.0
|
#include "llvm/CodeGen/LiveIntervalAnalysis.h"#include "LiveRangeCalc.h"#include "llvm/ADT/DenseSet.h"#include "llvm/ADT/STLExtras.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/CodeGen/LiveVariables.h"#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"#include "llvm/CodeGen/MachineDominators.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/Passes.h"#include "llvm/CodeGen/VirtRegMap.h"#include "llvm/IR/Value.h"#include "llvm/Support/BlockFrequency.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/Format.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Target/TargetInstrInfo.h"#include "llvm/Target/TargetRegisterInfo.h"#include "llvm/Target/TargetSubtargetInfo.h"#include <algorithm>#include <cmath>#include <limits>Go to the source code of this file.
Classes | |
| class | llvm::LiveIntervals::HMEditor |
Namespaces | |
| llvm | |
| Compute iterated dominance frontiers using a linear time algorithm. | |
Macros | |
| #define | DEBUG_TYPE "regalloc" |
Typedefs | |
| typedef SmallVector< std::pair < SlotIndex, VNInfo * >, 16 > | ShrinkToUsesWorkList |
Functions | |
| INITIALIZE_PASS_BEGIN (LiveIntervals,"liveintervals","Live Interval Analysis", false, false) INITIALIZE_PASS_END(LiveIntervals | |
| Live Interval static false cl::opt< bool > | EnablePrecomputePhysRegs ("precompute-phys-liveness", cl::Hidden, cl::desc("Eagerly compute live intervals for all physreg units.")) |
| cl::opt< bool > | llvm::UseSegmentSetForPhysRegs ("use-segment-set-for-physregs", cl::Hidden, cl::init(true), cl::desc("Use segment set for the computation of the live ranges of physregs.")) |
| static void | createSegmentsForValues (LiveRange &LR, iterator_range< LiveInterval::vni_iterator > VNIs) |
| static void | extendSegmentsToUses (LiveRange &LR, const SlotIndexes &Indexes, ShrinkToUsesWorkList &WorkList, const LiveRange &OldRange) |
Variables | |
| liveintervals | |
| Live Interval | Analysis |
| Live Interval | false |
| static cl::opt< bool > | EnableSubRegLiveness ("enable-subreg-liveness", cl::Hidden, cl::init(true), cl::desc("Enable subregister liveness tracking.")) |
| #define DEBUG_TYPE "regalloc" |
Definition at line 45 of file LiveIntervalAnalysis.cpp.
| typedef SmallVector<std::pair<SlotIndex, VNInfo*>, 16> ShrinkToUsesWorkList |
Definition at line 345 of file LiveIntervalAnalysis.cpp.
|
static |
Definition at line 335 of file LiveIntervalAnalysis.cpp.
References llvm::LiveRange::addSegment(), llvm::tgtok::Def, llvm::VNInfo::def, llvm::SlotIndex::getDeadSlot(), and llvm::VNInfo::isUnused().
Referenced by llvm::LiveIntervals::shrinkToUses().
|
static |
Referenced by llvm::LiveIntervals::runOnMachineFunction().
|
static |
Definition at line 347 of file LiveIntervalAnalysis.cpp.
References llvm::LiveRange::addSegment(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::dbgs(), DEBUG, llvm::VNInfo::def, llvm::SmallVectorBase::empty(), llvm::LiveRange::extendInBlock(), llvm::SlotIndexes::getMBBEndIdx(), llvm::SlotIndexes::getMBBFromIndex(), llvm::SlotIndexes::getMBBStartIdx(), llvm::SlotIndex::getPrevSlot(), llvm::LiveRange::getVNInfoBefore(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::VNInfo::isPHIDef(), llvm::SmallVectorTemplateBase< T, isPodLike >::pop_back(), llvm::MachineBasicBlock::predecessors(), and llvm::SmallVectorTemplateBase< T, isPodLike >::push_back().
Referenced by llvm::LiveIntervals::shrinkToUses().
| INITIALIZE_PASS_BEGIN | ( | LiveIntervals | , |
| "liveintervals" | , | ||
| "Live Interval Analysis" | , | ||
| false | , | ||
| false | |||
| ) |
| Live Interval Analysis |
Definition at line 55 of file LiveIntervalAnalysis.cpp.
|
static |
Referenced by llvm::LiveIntervals::runOnMachineFunction().
| Live Interval false |
Definition at line 55 of file LiveIntervalAnalysis.cpp.
| liveintervals |
Definition at line 55 of file LiveIntervalAnalysis.cpp.
1.8.6