]> granicus.if.org Git - clang/commitdiff
Remove UseNewVTableCode checks.
authorAnders Carlsson <andersca@mac.com>
Tue, 30 Mar 2010 03:35:35 +0000 (03:35 +0000)
committerAnders Carlsson <andersca@mac.com>
Tue, 30 Mar 2010 03:35:35 +0000 (03:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99868 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGVtable.cpp
lib/CodeGen/CGVtable.h

index afbfeabeb8e227d6fdb3defd8bb6be3870991c55..30c9efc91b3c66991ef53bde4d915bd1ecb9239d 100644 (file)
@@ -3617,21 +3617,8 @@ int64_t CodeGenVTables::getVirtualBaseOffsetOffset(const CXXRecordDecl *RD,
   return I->second;
 }
 
-static bool UseNewVTableCode = true;
-
 uint64_t
 CodeGenVTables::getAddressPoint(BaseSubobject Base, const CXXRecordDecl *RD) {
-  // FIXME: Always use the new vtable code once we know it works.
-  if (!UseNewVTableCode) {
-    const CodeGenVTables::AddrSubMap_t& AddressPoints = getAddressPoints(RD);
-
-    uint64_t AddressPoint = 
-      AddressPoints.lookup(std::make_pair(Base.getBase(),
-                                          Base.getBaseOffset()));
-  
-    assert(AddressPoint && "Address point must not be zero!");
-  }
-  
   uint64_t AddressPoint = AddressPoints.lookup(std::make_pair(RD, Base));
   assert(AddressPoint && "Address point must not be zero!");
 
@@ -4189,9 +4176,7 @@ GetGlobalVariable(llvm::Module &Module, llvm::StringRef Name,
   return GV;
 }
 
-// FIXME: When the new code is in place, we can change this to return a 
-// GlobalVariable.
-llvm::Constant *CodeGenVTables::GetAddrOfVTable(const CXXRecordDecl *RD) {
+llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTable(const CXXRecordDecl *RD) {
   llvm::SmallString<256> OutName;
   CGM.getMangleContext().mangleCXXVtable(RD, OutName);
   llvm::StringRef Name = OutName.str();
@@ -4202,23 +4187,8 @@ llvm::Constant *CodeGenVTables::GetAddrOfVTable(const CXXRecordDecl *RD) {
   llvm::ArrayType *ArrayType = 
     llvm::ArrayType::get(Int8PtrTy, getNumVTableComponents(RD));
 
-  // FIXME: Always use the new vtable code once we know it works.
-  if (UseNewVTableCode)
-    return GetGlobalVariable(CGM.getModule(), Name, ArrayType, 
-                             llvm::GlobalValue::ExternalLinkage);
-
-  llvm::GlobalVariable *GV = CGM.getModule().getNamedGlobal(Name);
-  if (GV) {
-    if (!GV->isDeclaration() || GV->getType()->getElementType() == ArrayType)
-      return GV;
-  
-    return llvm::ConstantExpr::getBitCast(GV, ArrayType->getPointerTo());
-  }
-  
-  GV = new llvm::GlobalVariable(CGM.getModule(), ArrayType, /*isConstant=*/true,
-                                llvm::GlobalValue::ExternalLinkage, 0, Name);
-
-  return GV;
+  return GetGlobalVariable(CGM.getModule(), Name, ArrayType, 
+                           llvm::GlobalValue::ExternalLinkage);
 }
 
 void
@@ -4305,16 +4275,9 @@ CodeGenVTables::GenerateClassData(llvm::GlobalVariable::LinkageTypes Linkage,
     return;
   }
 
-  // FIXME: Always use the new vtable code once we know it works.
-  if (UseNewVTableCode) {
-    VTable = cast<llvm::GlobalVariable>(GetAddrOfVTable(RD));
-    EmitVTableDefinition(VTable, Linkage, RD);
-  } else {
-    llvm::DenseMap<BaseSubobject, uint64_t> AddressPoints;
-    VTable = GenerateVtable(Linkage, /*GenerateDefinition=*/true, RD, RD, 0,
-                            /*IsVirtual=*/false,
-                            AddressPoints);
-  }
+  VTable = GetAddrOfVTable(RD);
+  EmitVTableDefinition(VTable, Linkage, RD);
+
   GenerateVTT(Linkage, /*GenerateDefinition=*/true, RD);
 }
 
index 6a37eb26d139ad1f77b9ee0208185229f567cbef..714b7c88b5d62a970cc32b9a78ebc1729705c99f 100644 (file)
@@ -385,7 +385,7 @@ public:
   uint64_t getAddressPoint(BaseSubobject Base, const CXXRecordDecl *RD);
   
   /// GetAddrOfVTable - Get the address of the vtable for the given record decl.
-  llvm::Constant *GetAddrOfVTable(const CXXRecordDecl *RD);
+  llvm::GlobalVariable *GetAddrOfVTable(const CXXRecordDecl *RD);
 
   /// EmitVTableDefinition - Emit the definition of the given vtable.
   void EmitVTableDefinition(llvm::GlobalVariable *VTable,