diff options
author | Quentin Colombet <qcolombet@apple.com> | 2016-03-07 21:22:09 +0000 |
---|---|---|
committer | Quentin Colombet <qcolombet@apple.com> | 2016-03-07 21:22:09 +0000 |
commit | 76b5b59a757bdd79c2e1ced8ceb0ebf7c103da37 (patch) | |
tree | d066d9887f69942de900581dba5d1a19e519431e | |
parent | 420f9c1154bfad412861e6c17b2a4d9194a3b74a (diff) | |
download | llvm-76b5b59a757bdd79c2e1ced8ceb0ebf7c103da37.tar.gz |
[MachineRegisterInfo] Get rid of the global-isel ifdefs.
One additional pointer is not a big deal size-wise and it makes
the code much nicer!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@262856 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/MachineRegisterInfo.h | 15 | ||||
-rw-r--r-- | lib/CodeGen/MachineRegisterInfo.cpp | 9 |
2 files changed, 13 insertions, 11 deletions
diff --git a/include/llvm/CodeGen/MachineRegisterInfo.h b/include/llvm/CodeGen/MachineRegisterInfo.h index 65fb1be8c83b..ab29c4849efb 100644 --- a/include/llvm/CodeGen/MachineRegisterInfo.h +++ b/include/llvm/CodeGen/MachineRegisterInfo.h @@ -105,10 +105,17 @@ private: /// started. BitVector ReservedRegs; -#ifdef LLVM_BUILD_GLOBAL_ISEL + typedef DenseMap<unsigned, unsigned> VRegToSizeMap; /// Map generic virtual registers to their actual size. - DenseMap<unsigned, unsigned> VRegToSize; -#endif + mutable std::unique_ptr<VRegToSizeMap> VRegToSize; + + /// Accessor for VRegToSize. This accessor should only be used + /// by global-isel related work. + VRegToSizeMap &getVRegToSize() const { + if (!VRegToSize) + VRegToSize.reset(new VRegToSizeMap); + return *VRegToSize.get(); + } /// Keep track of the physical registers that are live in to the function. /// Live in values are typically arguments in registers. LiveIn values are @@ -592,7 +599,6 @@ public: /// unsigned createVirtualRegister(const TargetRegisterClass *RegClass); -#ifdef LLVM_BUILD_GLOBAL_ISEL /// Get the size of \p VReg or 0 if VReg is not a generic /// (target independent) virtual register. unsigned getSize(unsigned VReg) const; @@ -600,7 +606,6 @@ public: /// Create and return a new generic virtual register with a size of \p Size. /// \pre Size > 0. unsigned createGenericVirtualRegister(unsigned Size); -#endif /// getNumVirtRegs - Return the number of virtual registers created. /// diff --git a/lib/CodeGen/MachineRegisterInfo.cpp b/lib/CodeGen/MachineRegisterInfo.cpp index 313c259a547b..2b81f6b20156 100644 --- a/lib/CodeGen/MachineRegisterInfo.cpp +++ b/lib/CodeGen/MachineRegisterInfo.cpp @@ -103,12 +103,10 @@ MachineRegisterInfo::createVirtualRegister(const TargetRegisterClass *RegClass){ return Reg; } -#ifdef LLVM_BUILD_GLOBAL_ISEL unsigned MachineRegisterInfo::getSize(unsigned VReg) const { - DenseMap<unsigned, unsigned>::const_iterator SizeIt = - VRegToSize.find(VReg); - return SizeIt != VRegToSize.end()? SizeIt->second: 0; + VRegToSizeMap::const_iterator SizeIt = getVRegToSize().find(VReg); + return SizeIt != getVRegToSize().end() ? SizeIt->second : 0; } unsigned @@ -120,13 +118,12 @@ MachineRegisterInfo::createGenericVirtualRegister(unsigned Size) { VRegInfo.grow(Reg); // FIXME: Should we use a dummy register class? VRegInfo[Reg].first = nullptr; - VRegToSize[Reg] = Size; + getVRegToSize()[Reg] = Size; RegAllocHints.grow(Reg); if (TheDelegate) TheDelegate->MRI_NoteNewVirtualRegister(Reg); return Reg; } -#endif // LLVM_BUILD_GLOBAL_ISEL /// clearVirtRegs - Remove all virtual registers (after physreg assignment). void MachineRegisterInfo::clearVirtRegs() { |