Add a way to get the index of a method. Assert that we have the same index for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90533 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGVtable.cpp b/lib/CodeGen/CGVtable.cpp
index 23de0a7..736af40 100644
--- a/lib/CodeGen/CGVtable.cpp
+++ b/lib/CodeGen/CGVtable.cpp
@@ -90,13 +90,17 @@
       // Replace the old decl with the new decl.
       Methods[Index] = GD;
 
-      // Now remove the old decl from the method to index map.
-      MethodToIndexMap.erase(i);
-        
       // And add the new.
       MethodToIndexMap[GD] = Index;
     }
 
+    /// getIndex - Returns the index of the given method.
+    uint64_t getIndex(GlobalDecl GD) const {
+      assert(MethodToIndexMap.count(GD) && "Did not find method!");
+      
+      return MethodToIndexMap.lookup(GD);
+    }
+
     MethodsVectorTy::size_type size() const {
       return Methods.size();
     }
@@ -106,7 +110,7 @@
       Methods.clear();
     }
     
-    GlobalDecl operator[](unsigned Index) const {
+    GlobalDecl operator[](uint64_t Index) const {
       return Methods[Index];
     }
   };
@@ -751,9 +755,10 @@
 
     for (Index_t i = 0, e = submethods.size();
          i != e; ++i) {
-      // FIXME: begin_overridden_methods might be too lax, covariance */
       if (submethods[i] != om)
         continue;
+
+      assert(i == Methods.getIndex(OGD));
       
       QualType ReturnType = 
         MD->getType()->getAs<FunctionType>()->getResultType();