aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Colombet <qcolombet@apple.com>2016-03-07 21:22:09 +0000
committerQuentin Colombet <qcolombet@apple.com>2016-03-07 21:22:09 +0000
commit76b5b59a757bdd79c2e1ced8ceb0ebf7c103da37 (patch)
treed066d9887f69942de900581dba5d1a19e519431e
parent420f9c1154bfad412861e6c17b2a4d9194a3b74a (diff)
downloadllvm-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.h15
-rw-r--r--lib/CodeGen/MachineRegisterInfo.cpp9
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() {