[cfe-commits] r99576 - /cfe/trunk/lib/CodeGen/CGVTT.cpp

Anders Carlsson andersca at mac.com
Thu Mar 25 17:11:52 PDT 2010


Author: andersca
Date: Thu Mar 25 19:11:51 2010
New Revision: 99576

URL: http://llvm.org/viewvc/llvm-project?rev=99576&view=rev
Log:
Remove some VTT builder arguments that were always zero.

Modified:
    cfe/trunk/lib/CodeGen/CGVTT.cpp

Modified: cfe/trunk/lib/CodeGen/CGVTT.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGVTT.cpp?rev=99576&r1=99575&r2=99576&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGVTT.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGVTT.cpp Thu Mar 25 19:11:51 2010
@@ -107,8 +107,8 @@
   /// Secondary - Add the secondary vtable pointers to Inits.  Offset is the
   /// current offset in bits to the object we're working on.
   void Secondary(const CXXRecordDecl *RD, llvm::Constant *vtbl,
-                 const CXXRecordDecl *VtblClass, uint64_t Offset=0,
-                 bool MorallyVirtual=false) {
+                 const CXXRecordDecl *VtblClass, uint64_t Offset,
+                 bool MorallyVirtual) {
     if (RD->getNumVBases() == 0 && ! MorallyVirtual)
       return;
 
@@ -171,8 +171,7 @@
 
   /// BuiltVTT - Add the VTT to Inits.  Offset is the offset in bits to the
   /// currnet object we're working on.
-  void BuildVTT(const CXXRecordDecl *RD, uint64_t Offset, bool BaseIsVirtual,
-                bool MorallyVirtual) {
+  void BuildVTT(const CXXRecordDecl *RD, uint64_t Offset, bool BaseIsVirtual) {
     // Itanium C++ ABI 2.6.2:
     //   An array of virtual table addresses, called the VTT, is declared for 
     //   each class type that has indirect or direct virtual base classes.
@@ -186,33 +185,27 @@
     const CXXRecordDecl *VtableClass;
 
     // First comes the primary virtual table pointer...
-    if (MorallyVirtual) {
-      Vtable = ClassVtbl;
-      VtableClass = Class;
-    } else {
-      Vtable = getCtorVtable(BaseSubobject(RD, Offset), 
-                             /*IsVirtual=*/BaseIsVirtual);
-      VtableClass = RD;
-    }
+    Vtable = getCtorVtable(BaseSubobject(RD, Offset), 
+                           /*IsVirtual=*/BaseIsVirtual);
+    VtableClass = RD;
     
     llvm::Constant *Init = BuildVtablePtr(Vtable, VtableClass, RD, Offset);
     Inits.push_back(Init);
 
     // then the secondary VTTs....
-    SecondaryVTTs(RD, Offset, MorallyVirtual);
+    SecondaryVTTs(RD, Offset);
 
     // Make sure to clear the set of seen virtual bases.
     SeenVBasesInSecondary.clear();
 
     // and last the secondary vtable pointers.
-    Secondary(RD, Vtable, VtableClass, Offset, MorallyVirtual);
+    Secondary(RD, Vtable, VtableClass, Offset, false);
   }
 
   /// SecondaryVTTs - Add the secondary VTTs to Inits.  The secondary VTTs are
   /// built from each direct non-virtual proper base that requires a VTT in
   /// declaration order.
-  void SecondaryVTTs(const CXXRecordDecl *RD, uint64_t Offset=0,
-                     bool MorallyVirtual=false) {
+  void SecondaryVTTs(const CXXRecordDecl *RD, uint64_t Offset) {
     for (CXXRecordDecl::base_class_const_iterator i = RD->bases_begin(),
            e = RD->bases_end(); i != e; ++i) {
       const CXXRecordDecl *Base =
@@ -222,7 +215,7 @@
       const ASTRecordLayout &Layout = CGM.getContext().getASTRecordLayout(RD);
       uint64_t BaseOffset = Offset + Layout.getBaseClassOffset(Base);
       
-      BuildVTT(Base, BaseOffset, /*BaseIsVirtual=*/false, MorallyVirtual);
+      BuildVTT(Base, BaseOffset, /*BaseIsVirtual=*/false);
     }
   }
 
@@ -236,7 +229,7 @@
       if (i->isVirtual() && !SeenVBase.count(Base)) {
         SeenVBase.insert(Base);
         uint64_t BaseOffset = BLayout.getVBaseClassOffset(Base);
-        BuildVTT(Base, BaseOffset, /*BaseIsVirtual=*/true, false);
+        BuildVTT(Base, BaseOffset, /*BaseIsVirtual=*/true);
       }
       VirtualVTTs(Base);
     }
@@ -258,13 +251,13 @@
     Inits.push_back(Init);
     
     // then the secondary VTTs...
-    SecondaryVTTs(Class);
+    SecondaryVTTs(Class, 0);
 
     // Make sure to clear the set of seen virtual bases.
     SeenVBasesInSecondary.clear();
 
     // then the secondary vtable pointers...
-    Secondary(Class, ClassVtbl, Class);
+    Secondary(Class, ClassVtbl, Class, 0, false);
 
     // and last, the virtual VTTs.
     VirtualVTTs(Class);





More information about the cfe-commits mailing list