]> granicus.if.org Git - clang/commitdiff
Convert local offset variable to CharUnits in AddVCallOffsets. No change in
authorKen Dyck <kd@kendyck.com>
Wed, 30 Mar 2011 01:21:33 +0000 (01:21 +0000)
committerKen Dyck <kd@kendyck.com>
Wed, 30 Mar 2011 01:21:33 +0000 (01:21 +0000)
functionality intended.

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

lib/CodeGen/CGVTables.cpp

index ac27ab8c6e22ed84cb4623a6b97982505f991930..a0d7c4cfc9c245d06cdd3515dd5e9f538dc26d77 100644 (file)
@@ -876,7 +876,7 @@ void VCallAndVBaseOffsetBuilder::AddVCallOffsets(BaseSubobject Base,
     if (!VCallOffsets.AddVCallOffset(MD, OffsetOffset))
       continue;
 
-    int64_t Offset = 0;
+    CharUnits Offset = CharUnits::Zero();
 
     if (Overriders) {
       // Get the final overrider.
@@ -885,11 +885,11 @@ void VCallAndVBaseOffsetBuilder::AddVCallOffsets(BaseSubobject Base,
       
       /// The vcall offset is the offset from the virtual base to the object 
       /// where the function was overridden.
-      // FIXME: We should not use / 8 here.
-      Offset = (int64_t)(Context.toBits(Overrider.Offset) - VBaseOffset) / 8;
+      Offset = Overrider.Offset - Context.toCharUnitsFromBits(VBaseOffset);
     }
     
-    Components.push_back(VTableComponent::MakeVCallOffset(Offset));
+    Components.push_back(
+      VTableComponent::MakeVCallOffset(Offset.getQuantity()));
   }
 
   // And iterate over all non-virtual bases (ignoring the primary base).