diff options
author | Owen Anderson <resistor@mac.com> | 2009-04-12 22:31:17 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2009-04-12 22:31:17 +0000 |
commit | deadae28ea38da3b73d0cda76cd9bc6209dca1a8 (patch) | |
tree | ba1f2a248a08f13ddf677590b20d20df5336bf21 /llvm | |
parent | 1d37dcc98609903978cb8398fe50f1ef01bd8fe6 (diff) | |
download | bcm5719-llvm-deadae28ea38da3b73d0cda76cd9bc6209dca1a8.tar.gz bcm5719-llvm-deadae28ea38da3b73d0cda76cd9bc6209dca1a8.zip |
Use a hashtable for TargetRegisterClass::contains.
llvm-svn: 68922
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/Target/TargetRegisterInfo.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/include/llvm/Target/TargetRegisterInfo.h b/llvm/include/llvm/Target/TargetRegisterInfo.h index 45f9f2db901..69011477ca7 100644 --- a/llvm/include/llvm/Target/TargetRegisterInfo.h +++ b/llvm/include/llvm/Target/TargetRegisterInfo.h @@ -18,6 +18,7 @@ #include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/CodeGen/ValueTypes.h" +#include "llvm/ADT/DenseSet.h" #include <cassert> #include <functional> @@ -64,6 +65,7 @@ private: const unsigned RegSize, Alignment; // Size & Alignment of register in bytes const int CopyCost; const iterator RegsBegin, RegsEnd; + DenseSet<unsigned> RegSet; public: TargetRegisterClass(unsigned id, const char *name, @@ -73,7 +75,10 @@ public: unsigned RS, unsigned Al, int CC, iterator RB, iterator RE) : ID(id), Name(name), VTs(vts), SubClasses(subcs), SuperClasses(supcs), - RegSize(RS), Alignment(Al), CopyCost(CC), RegsBegin(RB), RegsEnd(RE) {} + RegSize(RS), Alignment(Al), CopyCost(CC), RegsBegin(RB), RegsEnd(RE) { + for (iterator I = RegsBegin, E = RegsEnd; I != E; ++I) + RegSet.insert(*I); + } virtual ~TargetRegisterClass() {} // Allow subclasses /// getID() - Return the register class ID number. @@ -103,9 +108,7 @@ public: /// contains - Return true if the specified register is included in this /// register class. bool contains(unsigned Reg) const { - for (iterator I = begin(), E = end(); I != E; ++I) - if (*I == Reg) return true; - return false; + return RegSet.count(Reg); } /// hasType - return true if this TargetRegisterClass has the ValueType vt. |