diff gen/classes.cpp @ 190:36044016709a trunk

[svn r206] Fixed some interfaceInfo related issues, closes #44
author lindquist
date Mon, 12 May 2008 14:32:29 +0200
parents cea8dcfa76df
children 67ed21bf16af
line wrap: on
line diff
--- a/gen/classes.cpp	Sat May 10 19:00:11 2008 +0200
+++ b/gen/classes.cpp	Mon May 12 14:32:29 2008 +0200
@@ -434,9 +434,6 @@
     if (cd->ir.initialized) return;
     cd->ir.initialized = true;
 
-    if (cd->isInterfaceDeclaration())
-        return; // nothing to do
-
     Logger::println("DtoConstInitClass(%s): %s", cd->toPrettyChars(), cd->loc.toChars());
     LOG_SCOPE;
 
@@ -463,15 +460,10 @@
     std::vector<llvm::Constant*> fieldinits;
 
     // first field is always the vtable
-    if (cd->isAbstract())
+    if (cd->isAbstract() || cd->isInterfaceDeclaration())
     {
-        fieldinits.push_back(
-            llvm::ConstantPointerNull::get(
-                getPtrToType(
-                    ts->ir.vtblType->get()
-                )
-            )
-        );
+        const llvm::Type* ptrTy = getPtrToType(ts->ir.vtblType->get());
+        fieldinits.push_back(llvm::Constant::getNullValue(ptrTy));
     }
     else
     {