LLVM 20.0.0git
Classes | Namespaces | Macros | Functions | Variables
LiveIntervals.cpp File Reference
#include "llvm/CodeGen/LiveIntervals.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/CodeGen/LiveInterval.h"
#include "llvm/CodeGen/LiveIntervalCalc.h"
#include "llvm/CodeGen/LiveVariables.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/MachineInstrBundle.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineSizeOpts.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/CodeGen/SlotIndexes.h"
#include "llvm/CodeGen/StackMaps.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/CodeGen/VirtRegMap.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/ProfileSummary.h"
#include "llvm/IR/Statepoint.h"
#include "llvm/MC/LaneBitmask.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <iterator>
#include <tuple>
#include <utility>

Go to the source code of this file.

Classes

class  llvm::LiveIntervals::HMEditor
 Toolkit used by handleMove to trim or extend live intervals. More...
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Macros

#define DEBUG_TYPE   "regalloc"
 

Functions

 INITIALIZE_PASS_BEGIN (LiveIntervalsWrapperPass, "liveintervals", "Live Interval Analysis", false, false) INITIALIZE_PASS_END(LiveIntervalsWrapperPass
 
cl::opt< boolllvm::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 bool hasLiveThroughUse (const MachineInstr *MI, Register Reg)
 Check whether use of reg in MI is live-through.
 

Variables

 liveintervals
 
Live Interval Analysis
 
Live Interval false
 
static cl::opt< boolEnablePrecomputePhysRegs ("precompute-phys-liveness", cl::Hidden, cl::desc("Eagerly compute live intervals for all physreg units."))
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "regalloc"

Definition at line 60 of file LiveIntervals.cpp.

Function Documentation

◆ createSegmentsForValues()

static void createSegmentsForValues ( LiveRange LR,
iterator_range< LiveInterval::vni_iterator >  VNIs 
)
static

◆ hasLiveThroughUse()

static bool hasLiveThroughUse ( const MachineInstr MI,
Register  Reg 
)
static

Check whether use of reg in MI is live-through.

Live-through means that the value is alive on exit from Machine instruction. The example of such use is a deopt value in statepoint instruction.

Definition at line 926 of file LiveIntervals.cpp.

References llvm::DeoptLiveIn, llvm::StatepointOpers::getFlags(), llvm::StatepointOpers::getNumDeoptArgsIdx(), llvm::StatepointOpers::getNumGCPtrIdx(), llvm::MachineOperand::getReg(), Idx, llvm::MachineOperand::isReg(), and MI.

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

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( LiveIntervalsWrapperPass  ,
"liveintervals"  ,
"Live Interval Analysis"  ,
false  ,
false   
)

Variable Documentation

◆ Analysis

Live Interval Analysis

Definition at line 86 of file LiveIntervals.cpp.

◆ EnablePrecomputePhysRegs

cl::opt< bool > EnablePrecomputePhysRegs("precompute-phys-liveness", cl::Hidden, cl::desc("Eagerly compute live intervals for all physreg units.")) ( "precompute-phys-liveness"  ,
cl::Hidden  ,
cl::desc("Eagerly compute live intervals for all physreg units.")   
)
static

◆ false

Live Interval false

Definition at line 86 of file LiveIntervals.cpp.

◆ liveintervals

liveintervals

Definition at line 85 of file LiveIntervals.cpp.