Reapply r99775 with a fix for a silly bug - we were setting the vtable pointer for all bases, even those without a vtable pointer :)

llvm-svn: 99777
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h
index 3d7165b..31ab101 100644
--- a/clang/lib/CodeGen/CodeGenFunction.h
+++ b/clang/lib/CodeGen/CodeGenFunction.h
@@ -519,11 +519,13 @@
                                const CXXRecordDecl *VTableClass);
 
   typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy;
+  void InitializeVTablePointers(BaseSubobject Base, bool BaseIsMorallyVirtual,
+                                bool BaseIsNonVirtualPrimaryBase,
+                                llvm::Constant *VTable,
+                                const CXXRecordDecl *VTableClass,
+                                VisitedVirtualBasesSetTy& VBases);
 
-  void InitializeVtablePtrs(BaseSubobject Base, llvm::Constant *VTable,
-                            const CXXRecordDecl *VTableClass);
-
-  void InitializeVtablePtrs(const CXXRecordDecl *ClassDecl);
+  void InitializeVTablePointers(const CXXRecordDecl *ClassDecl);
 
 
   void SynthesizeCXXCopyConstructor(const FunctionArgList &Args);