Range-for some stuff related to RegClasses, and comment cases where range-for isn...
[oota-llvm.git] / utils / TableGen / CodeGenRegisters.h
index 1254154be8c5ae78a2ddbbf50fa0941633612496..fc585fa42c2f4c4af02fb3812d581ea7ce28c06a 100644 (file)
 #include "llvm/TableGen/Record.h"
 #include "llvm/TableGen/SetTheory.h"
 #include <cstdlib>
+#include <list>
 #include <map>
 #include <set>
 #include <string>
 #include <vector>
-#include <forward_list>
+#include <deque>
 
 namespace llvm {
   class CodeGenRegBank;
@@ -449,8 +450,7 @@ namespace llvm {
   class CodeGenRegBank {
     SetTheory Sets;
 
-    //std::forward_list<CodeGenSubRegIndex> SubRegIndices;
-    std::vector<CodeGenSubRegIndex*> SubRegIndices;
+    std::deque<CodeGenSubRegIndex> SubRegIndices;
     DenseMap<Record*, CodeGenSubRegIndex*> Def2SubRegIdx;
 
     CodeGenSubRegIndex *createSubRegIndex(StringRef Name, StringRef NameSpace);
@@ -460,7 +460,7 @@ namespace llvm {
     ConcatIdxMap ConcatIdx;
 
     // Registers.
-    std::vector<CodeGenRegister*> Registers;
+    std::deque<CodeGenRegister> Registers;
     StringMap<CodeGenRegister*> RegistersByName;
     DenseMap<Record*, CodeGenRegister*> Def2Reg;
     unsigned NumNativeRegUnits;
@@ -524,14 +524,15 @@ namespace llvm {
 
   public:
     CodeGenRegBank(RecordKeeper&);
-    ~CodeGenRegBank();
 
     SetTheory &getSets() { return Sets; }
 
     // Sub-register indices. The first NumNamedIndices are defined by the user
     // in the .td files. The rest are synthesized such that all sub-registers
     // have a unique name.
-    std::vector<CodeGenSubRegIndex*> &getSubRegIndices() { return SubRegIndices; }
+    const std::deque<CodeGenSubRegIndex> &getSubRegIndices() const {
+      return SubRegIndices;
+    }
 
     // Find a SubRegIndex form its Record def.
     CodeGenSubRegIndex *getSubRegIdx(Record*);
@@ -551,7 +552,7 @@ namespace llvm {
       ConcatIdx.insert(std::make_pair(Parts, Idx));
     }
 
-    const std::vector<CodeGenRegister*> &getRegisters() { return Registers; }
+    const std::deque<CodeGenRegister> &getRegisters() { return Registers; }
     const StringMap<CodeGenRegister*> &getRegistersByName() {
       return RegistersByName;
     }
@@ -608,7 +609,9 @@ namespace llvm {
     RegUnit &getRegUnit(unsigned RUID) { return RegUnits[RUID]; }
     const RegUnit &getRegUnit(unsigned RUID) const { return RegUnits[RUID]; }
 
-    ArrayRef<CodeGenRegisterClass*> getRegClasses() const {
+    std::vector<CodeGenRegisterClass *> &getRegClasses() { return RegClasses; }
+
+    const std::vector<CodeGenRegisterClass *> &getRegClasses() const {
       return RegClasses;
     }