]> granicus.if.org Git - clang/commitdiff
Convert the offsets in SubobjectOffsetMapTy to CharUnits. No change in
authorKen Dyck <kd@kendyck.com>
Sat, 26 Mar 2011 01:09:13 +0000 (01:09 +0000)
committerKen Dyck <kd@kendyck.com>
Sat, 26 Mar 2011 01:09:13 +0000 (01:09 +0000)
functionality intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128317 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGVTables.cpp

index 414900bde47f74e845461292a46a23beff83364a..cc0da893552edfcfa321e81f8ab241dd9877369f 100644 (file)
@@ -104,7 +104,7 @@ private:
   /// as a record decl and a subobject number) and its offsets in the most
   /// derived class as well as the layout class.
   typedef llvm::DenseMap<std::pair<const CXXRecordDecl *, unsigned>, 
-                         uint64_t> SubobjectOffsetMapTy;
+                         CharUnits> SubobjectOffsetMapTy;
 
   typedef llvm::DenseMap<const CXXRecordDecl *, unsigned> SubobjectCountMapTy;
   
@@ -182,7 +182,7 @@ FinalOverriders::FinalOverriders(const CXXRecordDecl *MostDerivedClass,
                                                    SubobjectNumber)) &&
              "Did not find subobject offset!");
       
-      uint64_t BaseOffset = SubobjectOffsets[std::make_pair(MD->getParent(),
+      CharUnits BaseOffset = SubobjectOffsets[std::make_pair(MD->getParent(),
                                                             SubobjectNumber)];
 
       assert(I->second.size() == 1 && "Final overrider is not unique!");
@@ -192,14 +192,15 @@ FinalOverriders::FinalOverriders(const CXXRecordDecl *MostDerivedClass,
       assert(SubobjectLayoutClassOffsets.count(
              std::make_pair(OverriderRD, Method.Subobject))
              && "Did not find subobject offset!");
-      uint64_t OverriderOffset =
+      CharUnits OverriderOffset =
         SubobjectLayoutClassOffsets[std::make_pair(OverriderRD, 
                                                    Method.Subobject)];
 
-      OverriderInfo& Overrider = OverridersMap[std::make_pair(MD, BaseOffset)];
+      OverriderInfo& Overrider = 
+        OverridersMap[std::make_pair(MD, Context.toBits(BaseOffset))];
       assert(!Overrider.Method && "Overrider should not exist yet!");
       
-      Overrider.Offset = OverriderOffset;
+      Overrider.Offset = Context.toBits(OverriderOffset);
       Overrider.Method = Method.Method;
     }
   }
@@ -339,10 +340,9 @@ FinalOverriders::ComputeBaseOffsets(BaseSubobject Base, bool IsVirtual,
   assert(!SubobjectLayoutClassOffsets.count(std::make_pair(RD, SubobjectNumber)) 
          && "Subobject offset already exists!");
 
-  SubobjectOffsets[std::make_pair(RD, SubobjectNumber)] =
-    Context.toBits(Base.getBaseOffset());
+  SubobjectOffsets[std::make_pair(RD, SubobjectNumber)] = Base.getBaseOffset();
   SubobjectLayoutClassOffsets[std::make_pair(RD, SubobjectNumber)] =
-    OffsetInLayoutClass;
+    Context.toCharUnitsFromBits(OffsetInLayoutClass);
   
   // Traverse our bases.
   for (CXXRecordDecl::base_class_const_iterator I = RD->bases_begin(),