aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGCXX.cpp
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2009-07-30 21:47:44 +0000
committerMike Stump <mrs@apple.com>2009-07-30 21:47:44 +0000
commit7116da1efe23f90eb22524ac9aa036153b74f482 (patch)
tree958ad51523c4add1d818cc9eff9d6da14c2c8e9b /lib/CodeGen/CGCXX.cpp
parentb49ef009e431c92d73287367122b0aaa1aa60175 (diff)
Note some other limitations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77626 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGCXX.cpp')
-rw-r--r--lib/CodeGen/CGCXX.cpp10
1 files changed, 9 insertions, 1 deletions
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<CXXMethodDecl>(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<CXXRecordDecl>(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();