diff options
Diffstat (limited to 'contrib/llvm/lib/Target/Hexagon/BitTracker.h')
-rw-r--r-- | contrib/llvm/lib/Target/Hexagon/BitTracker.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/contrib/llvm/lib/Target/Hexagon/BitTracker.h b/contrib/llvm/lib/Target/Hexagon/BitTracker.h index 5df6b61710f6..058225c0d812 100644 --- a/contrib/llvm/lib/Target/Hexagon/BitTracker.h +++ b/contrib/llvm/lib/Target/Hexagon/BitTracker.h @@ -13,6 +13,7 @@ #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/SetVector.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/MachineOperand.h" #include <cassert> #include <cstdint> @@ -28,7 +29,6 @@ class ConstantInt; class MachineRegisterInfo; class MachineBasicBlock; class MachineFunction; -class MachineInstr; class raw_ostream; class TargetRegisterClass; class TargetRegisterInfo; @@ -73,6 +73,8 @@ private: // Priority queue of instructions using modified registers, ordered by // their relative position in a basic block. struct UseQueueType { + UseQueueType() : Uses(Dist) {} + unsigned size() const { return Uses.size(); } @@ -90,12 +92,18 @@ private: Set.erase(front()); Uses.pop(); } + void reset() { + Dist.clear(); + } private: struct Cmp { + Cmp(DenseMap<const MachineInstr*,unsigned> &Map) : Dist(Map) {} bool operator()(const MachineInstr *MI, const MachineInstr *MJ) const; + DenseMap<const MachineInstr*,unsigned> &Dist; }; std::priority_queue<MachineInstr*, std::vector<MachineInstr*>, Cmp> Uses; - DenseSet<MachineInstr*> Set; // Set to avoid adding duplicate entries. + DenseSet<const MachineInstr*> Set; // Set to avoid adding duplicate entries. + DenseMap<const MachineInstr*,unsigned> Dist; }; void reset(); |