Have the CXXBaseOrMemberInitializer keep track of whether an initializer initializes a virtual base or not.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@101004 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGClass.cpp b/lib/CodeGen/CGClass.cpp
index 177e862..7ca8f29 100644
--- a/lib/CodeGen/CGClass.cpp
+++ b/lib/CodeGen/CGClass.cpp
@@ -782,15 +782,7 @@
   CXXRecordDecl *BaseClassDecl =
     cast<CXXRecordDecl>(BaseType->getAs<RecordType>()->getDecl());
 
-  // FIXME: This method of determining whether a base is virtual is ridiculous;
-  // it should be part of BaseInit.
-  bool isBaseVirtual = false;
-  for (CXXRecordDecl::base_class_const_iterator I = ClassDecl->vbases_begin(),
-       E = ClassDecl->vbases_end(); I != E; ++I)
-    if (I->getType()->getAs<RecordType>()->getDecl() == BaseClassDecl) {
-      isBaseVirtual = true;
-      break;
-    }
+  bool isBaseVirtual = BaseInit->isBaseVirtual();
 
   // The base constructor doesn't construct virtual bases.
   if (CtorType == Ctor_Base && isBaseVirtual)
@@ -976,8 +968,6 @@
 
   llvm::SmallVector<CXXBaseOrMemberInitializer *, 8> MemberInitializers;
   
-  // FIXME: Add vbase initialization
-  
   for (CXXConstructorDecl::init_const_iterator B = CD->init_begin(),
        E = CD->init_end();
        B != E; ++B) {