From 7116da1efe23f90eb22524ac9aa036153b74f482 Mon Sep 17 00:00:00 2001 From: Mike Stump Date: Thu, 30 Jul 2009 21:47:44 +0000 Subject: [PATCH] Note some other limitations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77626 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGCXX.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/CodeGen/CGCXX.cpp b/lib/CodeGen/CGCXX.cpp index 8c960c7f98..215ee4c026 100644 --- a/lib/CodeGen/CGCXX.cpp +++ b/lib/CodeGen/CGCXX.cpp @@ -106,6 +106,12 @@ RValue CodeGenFunction::EmitCXXMemberCallExpr(const CXXMemberCallExpr *CE) { const CXXMethodDecl *MD = cast(ME->getMemberDecl()); const FunctionProtoType *FPT = MD->getType()->getAsFunctionProtoType(); + + // FIXME: It isn't just virtual as written, but all virtual functions. + if (MD->isVirtualAsWritten()) { + ErrorUnsupported(CE, "virtual dispatch"); + } + const llvm::Type *Ty = CGM.getTypes().GetFunctionType(CGM.getTypes().getFunctionInfo(MD), FPT->isVariadic()); @@ -490,7 +496,9 @@ const char *CodeGenModule::getMangledCXXDtorName(const CXXDestructorDecl *D, void CodeGenFunction::EmitCtorPrologue(const CXXConstructorDecl *CD) { const CXXRecordDecl *ClassDecl = cast(CD->getDeclContext()); assert(!ClassDecl->isPolymorphic() - && "FIXME. virtual base initialization unsupported"); + && "FIXME: virtual table initialization unsupported"); + assert(ClassDecl->getNumVBases() == 0 + && "FIXME: virtual base initialization unsupported"); for (CXXConstructorDecl::init_const_iterator B = CD->init_begin(), E = CD->init_end(); -- 2.50.1