Get the base class addresses before calling EmitClassCopyAssignment.

llvm-svn: 102676
diff --git a/clang/lib/CodeGen/CGClass.cpp b/clang/lib/CodeGen/CGClass.cpp
index 1641a83..98ed1b3 100644
--- a/clang/lib/CodeGen/CGClass.cpp
+++ b/clang/lib/CodeGen/CGClass.cpp
@@ -778,13 +778,16 @@
 
   for (CXXRecordDecl::base_class_const_iterator Base = ClassDecl->bases_begin();
        Base != ClassDecl->bases_end(); ++Base) {
-    // FIXME. copy assignment of virtual base NYI
-    if (Base->isVirtual())
-      continue;
-
+    
+    llvm::Value *Dest = GetAddressOfBaseClass(ThisPtr, ClassDecl, 
+                                              CXXBaseSpecifierArray(Base), 
+                                              /*NullCheckValue=*/false);
+    llvm::Value *Src = GetAddressOfBaseClass(SrcPtr, ClassDecl, 
+                                             CXXBaseSpecifierArray(Base), 
+                                             /*NullCheckValue=*/false);
     CXXRecordDecl *BaseClassDecl
       = cast<CXXRecordDecl>(Base->getType()->getAs<RecordType>()->getDecl());
-    EmitClassCopyAssignment(ThisPtr, SrcPtr, ClassDecl, BaseClassDecl);
+    EmitClassCopyAssignment(Dest, Src, 0, BaseClassDecl);
   }
 
   for (CXXRecordDecl::field_iterator Field = ClassDecl->field_begin(),