reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Derived Classes

include/llvm/CodeGen/LiveInterval.h
  679   class LiveInterval : public LiveRange {
  686     class SubRange : public LiveRange {

References

include/llvm/ADT/DenseMapInfo.h
   39   static inline T* getEmptyKey() {
   41     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   45   static inline T* getTombstoneKey() {
   47     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   51   static unsigned getHashValue(const T *PtrVal) {
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
include/llvm/ADT/STLExtras.h
  154 auto adl_begin(ContainerTy &&container)
  162 auto adl_end(ContainerTy &&container)
  178 auto adl_begin(ContainerTy &&container)
  184 auto adl_end(ContainerTy &&container)
 1205 auto remove_if(R &&Range, UnaryPredicate P) -> decltype(adl_begin(Range)) {
 1276 auto upper_bound(R &&Range, T &&Value) -> decltype(adl_begin(Range)) {
include/llvm/CodeGen/LiveInterval.h
  236     LiveRange(const LiveRange &Other, BumpPtrAllocator &Allocator) {
  243     void assign(const LiveRange &Other, BumpPtrAllocator &Allocator) {
  363     void MergeSegmentsInAsValue(const LiveRange &RHS, VNInfo *LHSValNo);
  370     void MergeValueInAsValue(const LiveRange &RHS,
  439     bool overlaps(const LiveRange &other) const {
  450     bool overlaps(const LiveRange &Other, const CoalescerPair &CP,
  460     bool overlapsFrom(const LiveRange &Other, const_iterator StartPos) const;
  466     bool covers(const LiveRange &Other) const;
  500     void join(LiveRange &Other,
  590     bool operator<(const LiveRange& other) const {
  664     void append(const LiveRange::Segment S);
  672   inline raw_ostream &operator<<(raw_ostream &OS, const LiveRange &LR) {
  679   class LiveInterval : public LiveRange {
  681     using super = LiveRange;
  686     class SubRange : public LiveRange {
  695       SubRange(LaneBitmask LaneMask, const LiveRange &Other,
  785                                  const LiveRange &CopyFrom) {
  884   raw_ostream &operator<<(raw_ostream &OS, const LiveRange::Segment &S);
  886   inline bool operator<(SlotIndex V, const LiveRange::Segment &S) {
  890   inline bool operator<(const LiveRange::Segment &S, SlotIndex V) {
  903     LiveRange *LR;
  905     LiveRange::iterator WriteI;
  906     LiveRange::iterator ReadI;
  907     SmallVector<LiveRange::Segment, 16> Spills;
  913     LiveRangeUpdater(LiveRange *lr = nullptr) : LR(lr) {}
  920     void add(LiveRange::Segment);
  935     void setDest(LiveRange *lr) {
  942     LiveRange *getDest() const { return LR; }
  975     unsigned Classify(const LiveRange &LR);
include/llvm/CodeGen/LiveIntervalUnion.h
   91   void unify(LiveInterval &VirtReg, const LiveRange &Range);
   94   void extract(LiveInterval &VirtReg, const LiveRange &Range);
  111     const LiveRange *LR = nullptr;
  112     LiveRange::const_iterator LRI;  ///< current position in LR
  120     void reset(unsigned NewUserTag, const LiveRange &NewLR,
  133     Query(const LiveRange &LR, const LiveIntervalUnion &LIU):
  138     void init(unsigned NewUserTag, const LiveRange &NewLR,
include/llvm/CodeGen/LiveIntervals.h
   96     SmallVector<LiveRange*, 0> RegUnitRanges;
  184     void extendToIndices(LiveRange &LR, ArrayRef<SlotIndex> Indices,
  187     void extendToIndices(LiveRange &LR, ArrayRef<SlotIndex> Indices) {
  198     void pruneValue(LiveRange &LR, SlotIndex Kill,
  245     bool isLiveInToMBB(const LiveRange &LR,
  250     bool isLiveOutOfMBB(const LiveRange &LR,
  393     LiveRange &getRegUnit(unsigned Unit) {
  394       LiveRange *LR = RegUnitRanges[Unit];
  398         RegUnitRanges[Unit] = LR = new LiveRange(UseSegmentSetForPhysRegs);
  406     LiveRange *getCachedRegUnit(unsigned Unit) {
  410     const LiveRange *getCachedRegUnit(unsigned Unit) const {
  471     void computeRegUnitRange(LiveRange&, unsigned Unit);
  475     void extendSegmentsToUses(LiveRange &Segments,
include/llvm/CodeGen/LiveRangeCalc.h
   75   using EntryInfoMap = DenseMap<LiveRange *, std::pair<BitVector, BitVector>>;
  102     LiveRange &LR;
  116     LiveInBlock(LiveRange &LR, MachineDomTreeNode *node, SlotIndex kill)
  128   bool isDefOnEntry(LiveRange &LR, ArrayRef<SlotIndex> Undefs,
  148   bool findReachingDefs(LiveRange &LR, MachineBasicBlock &UseMBB, SlotIndex Use,
  172   void extendToUses(LiveRange &LR, unsigned Reg, LaneBitmask LaneMask,
  210   void extend(LiveRange &LR, SlotIndex Use, unsigned PhysReg,
  216   void createDeadDefs(LiveRange &LR, unsigned Reg);
  222   void extendToUses(LiveRange &LR, unsigned PhysReg) {
  269   void addLiveInBlock(LiveRange &LR, MachineDomTreeNode *DomNode,
include/llvm/CodeGen/LiveRegMatrix.h
  150   LiveIntervalUnion::Query &query(const LiveRange &LR, unsigned RegUnit);
include/llvm/Support/PointerLikeTypeTraits.h
   56   static inline void *getAsVoidPointer(T *P) { return P; }
   57   static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
   59   enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
lib/CodeGen/InterferenceCache.cpp
  237     LiveRange *LR = RegUnits[i].Fixed;
lib/CodeGen/InterferenceCache.h
   80       LiveRange *Fixed = nullptr;
lib/CodeGen/LiveDebugVariables.cpp
  283                  LiveRange *LR, const VNInfo *VNI,
  716 void UserValue::extendDef(SlotIndex Idx, DbgValueLocation Loc, LiveRange *LR,
lib/CodeGen/LiveInterval.cpp
   67   LiveRange *LR;
   70   CalcLiveRangeUtilBase(LiveRange *LR) : LR(LR) {}
   73   using Segment = LiveRange::Segment;
  283     CalcLiveRangeUtilBase<CalcLiveRangeUtilVector, LiveRange::iterator,
  284                           LiveRange::Segments>;
  288   CalcLiveRangeUtilVector(LiveRange *LR) : CalcLiveRangeUtilVectorBase(LR) {}
  293   LiveRange::Segments &segmentsColl() { return LR->segments; }
  309     CalcLiveRangeUtilBase<CalcLiveRangeUtilSet, LiveRange::SegmentSet::iterator,
  310                           LiveRange::SegmentSet>;
  314   CalcLiveRangeUtilSet(LiveRange *LR) : CalcLiveRangeUtilSetBase(LR) {}
  319   LiveRange::SegmentSet &segmentsColl() { return *LR->segmentSet; }
  350 LiveRange::iterator LiveRange::find(SlotIndex Pos) {
  404 bool LiveRange::overlapsFrom(const LiveRange& other,
  445 bool LiveRange::overlaps(const LiveRange &Other, const CoalescerPair &CP,
  494 bool LiveRange::covers(const LiveRange &Other) const {
  548 LiveRange::iterator LiveRange::addSegment(Segment S) {
  641 void LiveRange::join(LiveRange &Other,
  724 void LiveRange::MergeSegmentsInAsValue(const LiveRange &RHS,
  736 void LiveRange::MergeValueInAsValue(const LiveRange &RHS,
  991 raw_ostream& llvm::operator<<(raw_ostream& OS, const LiveRange::Segment &S) {
 1159 static inline bool coalescable(const LiveRange::Segment &A,
 1160                                const LiveRange::Segment &B) {
 1170 void LiveRangeUpdater::add(LiveRange::Segment Seg) {
 1193   LiveRange::iterator E = LR->end();
 1258   LiveRange::iterator Src = WriteI;
 1259   LiveRange::iterator Dst = Src + NumMoved;
 1260   LiveRange::iterator SpillSrc = Spills.end();
 1261   LiveRange::iterator B = LR->begin();
 1309 unsigned ConnectedVNInfoEqClasses::Classify(const LiveRange &LR) {
lib/CodeGen/LiveIntervalUnion.cpp
   29 void LiveIntervalUnion::unify(LiveInterval &VirtReg, const LiveRange &Range) {
   35   LiveRange::const_iterator RegPos = Range.begin();
   36   LiveRange::const_iterator RegEnd = Range.end();
   56 void LiveIntervalUnion::extract(LiveInterval &VirtReg, const LiveRange &Range) {
   62   LiveRange::const_iterator RegPos = Range.begin();
   63   LiveRange::const_iterator RegEnd = Range.end();
  139   LiveRange::const_iterator LREnd = LR->end();
lib/CodeGen/LiveIntervals.cpp
  117   for (LiveRange *LR : RegUnitRanges)
  159     if (LiveRange *LR = RegUnitRanges[Unit])
  263 void LiveIntervals::computeRegUnitRange(LiveRange &LR, unsigned Unit) {
  330         LiveRange *LR = RegUnitRanges[Unit];
  333           LR = RegUnitRanges[Unit] = new LiveRange(UseSegmentSetForPhysRegs);
  350 static void createSegmentsForValues(LiveRange &LR,
  360 void LiveIntervals::extendSegmentsToUses(LiveRange &Segments,
  382   const LiveRange &OldRange = getSubRange(LI, LaneMask);
  487   LiveRange NewLR;
  507     LiveRange::iterator I = LI.FindSegmentContaining(Def);
  585   LiveRange NewLR;
  596     const LiveRange::Segment *Segment = SR.getSegmentContaining(VNI->def);
  612 void LiveIntervals::extendToIndices(LiveRange &LR,
  621 void LiveIntervals::pruneValue(LiveRange &LR, SlotIndex Kill,
  685   SmallVector<std::pair<const LiveRange*, LiveRange::const_iterator>, 8> RU;
  685   SmallVector<std::pair<const LiveRange*, LiveRange::const_iterator>, 8> RU;
  688                         LiveRange::const_iterator>, 4> SRs;
  703       const LiveRange &RURange = getRegUnit(*Unit);
  736         const LiveRange &RURange = *RUP.first;
  737         LiveRange::const_iterator &I = RUP.second;
  765             LiveRange::const_iterator &I = SRP.second;
  799           LiveRange::const_iterator N = std::next(RI);
  867 LiveRange::Segment
  873   LiveRange::Segment S(SlotIndex(getInstructionIndex(startInst).getRegSlot()),
  950   SmallPtrSet<LiveRange*, 8> Updated;
  964   LiveRange *getRegUnitLI(unsigned Unit) {
 1011         if (LiveRange *LR = getRegUnitLI(*Units))
 1021   void updateRange(LiveRange &LR, unsigned Reg, LaneBitmask LaneMask) {
 1045   void handleMoveDown(LiveRange &LR) {
 1046     LiveRange::iterator E = LR.end();
 1048     LiveRange::iterator OldIdxIn = LR.find(OldIdx.getBaseIndex());
 1054     LiveRange::iterator OldIdxOut;
 1069       LiveRange::iterator Next = std::next(OldIdxIn);
 1074         LiveRange::iterator NewIdxIn =
 1079           LiveRange::iterator Prev = std::prev(NewIdxIn);
 1123     LiveRange::iterator AfterNewIdx
 1135         LiveRange::iterator IPrev = std::prev(OldIdxOut);
 1140         LiveRange::iterator INext = std::next(OldIdxOut);
 1158         LiveRange::iterator NewSegment = std::prev(E);
 1163         LiveRange::iterator Prev = std::prev(NewSegment);
 1171         LiveRange::iterator Prev = std::prev(AfterNewIdx);
 1176           LiveRange::iterator NewSegment = AfterNewIdx;
 1208       LiveRange::iterator NewSegment = std::prev(AfterNewIdx);
 1218   void handleMoveUp(LiveRange &LR, unsigned Reg, LaneBitmask LaneMask) {
 1219     LiveRange::iterator E = LR.end();
 1221     LiveRange::iterator OldIdxIn = LR.find(OldIdx.getBaseIndex());
 1227     LiveRange::iterator OldIdxOut;
 1263     LiveRange::iterator NewIdxOut = LR.find(NewIdx.getRegSlot());
 1286           LiveRange::iterator NewIdxIn = NewIdxOut;
 1292           LiveRange::iterator Prev = std::prev(OldIdxIn);
 1316           LiveRange::iterator NewSegment = NewIdxIn;
 1317           LiveRange::iterator Next = std::next(NewSegment);
 1376         LiveRange::iterator NewSegment = NewIdxOut;
 1549           LiveRange::Segment S(instrIdx.getRegSlot(),
 1554           LiveRange::Segment S(instrIdx.getRegSlot(), lastUseIdx, VNI);
 1628     if (LiveRange *LR = getCachedRegUnit(*Unit))
lib/CodeGen/LiveRangeCalc.cpp
   65                           LiveRange &LR, const MachineOperand &MO) {
  133   LiveRange &MainRange = LI;
  147 void LiveRangeCalc::createDeadDefs(LiveRange &LR, unsigned Reg) {
  156 void LiveRangeCalc::extendToUses(LiveRange &LR, unsigned Reg, LaneBitmask Mask,
  241 void LiveRangeCalc::extend(LiveRange &LR, SlotIndex Use, unsigned PhysReg,
  276 bool LiveRangeCalc::isDefOnEntry(LiveRange &LR, ArrayRef<SlotIndex> Undefs,
  313     LiveRange::iterator UB = std::upper_bound(LR.begin(), LR.end(),
  316       LiveRange::Segment &Seg = *std::prev(UB);
  346 bool LiveRangeCalc::findReachingDefs(LiveRange &LR, MachineBasicBlock &UseMBB,
  553         LiveRange &LR = I.LR;
lib/CodeGen/LiveRegMatrix.cpp
  171     const LiveRange &UnitRange = LIS->getRegUnit(Unit);
  177 LiveIntervalUnion::Query &LiveRegMatrix::query(const LiveRange &LR,
  212   LiveRange::Segment Seg(Start, End, &valno);
  213   LiveRange LR;
lib/CodeGen/MachineVerifier.cpp
  250     void report_context(const LiveRange &LR, unsigned VRegUnit,
  252     void report_context(const LiveRange::Segment &S) const;
  256     void report_context_liverange(const LiveRange &LR) const;
  265                             SlotIndex UseIdx, const LiveRange &LR, unsigned VRegOrUnit,
  268                             SlotIndex DefIdx, const LiveRange &LR, unsigned VRegOrUnit,
  280     void verifyLiveRangeValue(const LiveRange&, const VNInfo*, unsigned,
  282     void verifyLiveRangeSegment(const LiveRange&,
  283                                 const LiveRange::const_iterator I, unsigned,
  285     void verifyLiveRange(const LiveRange&, unsigned,
  526 void MachineVerifier::report_context(const LiveRange &LR, unsigned VRegUnit,
  534 void MachineVerifier::report_context(const LiveRange::Segment &S) const {
  542 void MachineVerifier::report_context_liverange(const LiveRange &LR) const {
 1874     unsigned MONum, SlotIndex UseIdx, const LiveRange &LR, unsigned VRegOrUnit,
 1896     unsigned MONum, SlotIndex DefIdx, const LiveRange &LR, unsigned VRegOrUnit,
 1963           if (const LiveRange *LR = LiveInts->getCachedRegUnit(*Units))
 2360     if (const LiveRange *LR = LiveInts->getCachedRegUnit(i))
 2364 void MachineVerifier::verifyLiveRangeValue(const LiveRange &LR,
 2456 void MachineVerifier::verifyLiveRangeSegment(const LiveRange &LR,
 2457                                              const LiveRange::const_iterator I,
 2460   const LiveRange::Segment &S = *I;
 2671 void MachineVerifier::verifyLiveRange(const LiveRange &LR, unsigned Reg,
 2676   for (LiveRange::const_iterator I = LR.begin(), E = LR.end(); I != E; ++I)
lib/CodeGen/RegAllocGreedy.cpp
 2203     const LiveRange &LR = LIS->getRegUnit(*Units);
 2204     LiveRange::const_iterator I = LR.find(StartIdx);
 2205     LiveRange::const_iterator E = LR.end();
lib/CodeGen/RegisterCoalescer.cpp
  227     void mergeSubRangeInto(LiveInterval &LI, const LiveRange &ToMerge,
  232     void joinSubRegRanges(LiveRange &LRange, LiveRange &RRange,
  232     void joinSubRegRanges(LiveRange &LRange, LiveRange &RRange,
  695   for (LiveRange::Segment &ASeg : IntA.segments) {
  715 addSegmentsWithValNo(LiveRange &Dst, VNInfo *DstValNo, const LiveRange &Src,
  715 addSegmentsWithValNo(LiveRange &Dst, VNInfo *DstValNo, const LiveRange &Src,
  719   for (const LiveRange::Segment &S : Src.segments) {
  728     LiveRange::Segment Added = LiveRange::Segment(S.start, S.end, DstValNo);
  729     LiveRange::Segment &Merged = *Dst.addSegment(Added);
  960       if (LiveRange::Segment *S = SB.getSegmentContaining(CopyIdx))
 1455       if (LiveRange *LR = LIS->getCachedRegUnit(*Units))
 1470       if (LiveRange *LR = LIS->getCachedRegUnit(*Units))
 1548   LiveRange::Segment *Seg = DstLI.getSegmentContaining(RegIndex);
 2080       LiveRange &LR = LIS->getRegUnit(*UI);
 2165   LiveRange &LR;
 2336   JoinVals(LiveRange &LR, unsigned Reg, unsigned SubIdx, LaneBitmask LaneMask,
 3139         LiveRange::iterator I = LR.FindSegmentContaining(Def);
 3159           LiveRange::iterator I = SR.find(Def);
 3175           LiveRange::iterator S = LR.find(Def);
 3209 void RegisterCoalescer::joinSubRegRanges(LiveRange &LRange, LiveRange &RRange,
 3209 void RegisterCoalescer::joinSubRegRanges(LiveRange &LRange, LiveRange &RRange,
 3273                                           const LiveRange &ToMerge,
 3284           LiveRange RangeCopy(ToMerge, Allocator);
lib/CodeGen/RegisterPressure.cpp
  237 static const LiveRange *getLiveRange(const LiveIntervals &LIS, unsigned Reg) {
  424     bool(*Property)(const LiveRange &LR, SlotIndex Pos)) {
  440     const LiveRange *LR = LIS.getCachedRegUnit(RegUnit);
  584     const LiveRange *LR = getLiveRange(LIS, Reg);
 1259         const LiveRange::Segment *S = LR.getSegmentContaining(Pos);
 1270         const LiveRange::Segment *S = LR.getSegmentContaining(Pos);
lib/CodeGen/SplitKit.cpp
 1125   for (const LiveRange::Segment &S : Edit->getParent()) {
 1230 static bool removeDeadSegment(SlotIndex Def, LiveRange &LR) {
 1231   const LiveRange::Segment *Seg = LR.getSegmentContaining(Def);
 1242                                  LiveRange &LR, LaneBitmask LM,
 1252     LiveRange &PSR = !LM.all() ? getSubRangeForMask(LM, PLI)
 1411     for (const LiveRange::Segment &S : LI->segments) {
lib/CodeGen/SplitKit.h
  418                       LiveRange &LR, LaneBitmask LM,
lib/CodeGen/VirtRegMap.cpp
  476     const LiveRange &UnitRange = LIS->getRegUnit(*Unit);
lib/Target/AMDGPU/SIRegisterInfo.cpp
 1895       LiveRange &LR = LIS->getRegUnit(*Units);
lib/Target/AMDGPU/SIWholeQuadMode.cpp
  286         LiveRange &LR = LIS->getRegUnit(*RegUnit);
  584   LiveRange &LR = LIS->getRegUnit(*MCRegUnitIterator(AMDGPU::SCC, TRI));
  591   const LiveRange::Segment *S;
lib/Target/Hexagon/HexagonExpandCondsets.cpp
  203     void updateDeadsInRange(unsigned Reg, LaneBitmask LM, LiveRange &Range);
  348         LiveRange::iterator F = S.find(I->end);
  366       LiveRange &Range) {
 1110     LiveRange::Segment &LR = *I;
lib/Target/PowerPC/PPCVSXFMAMutate.cpp
  322             LiveRange &AddendSrcRange = LIS->getRegUnit(Unit);
lib/Target/SystemZ/SystemZInstrInfo.cpp
 1013       LiveRange &CCLiveRange = LIS->getRegUnit(*CCUnit);
usr/include/c++/7.4.0/bits/move.h
   72     constexpr _Tp&&
   83     constexpr _Tp&&
usr/include/c++/7.4.0/bits/range_access.h
   48     begin(_Container& __cont) -> decltype(__cont.begin())
   58     begin(const _Container& __cont) -> decltype(__cont.begin())
   68     end(_Container& __cont) -> decltype(__cont.end())
   78     end(const _Container& __cont) -> decltype(__cont.end())
usr/include/c++/7.4.0/type_traits
 1633     { typedef _Tp   type; };
 1983     { typedef _Up     type; };