diff gen/typinf.cpp @ 98:6789050b5ad1 trunk

[svn r102] Further delayed emission of function bodies to avoid problems with circular-forward-references. Now uses the DMD _adEq(void[], void[], TypeInfo) runtime function for array equality comparison.
author lindquist
date Wed, 14 Nov 2007 23:39:10 +0100
parents ce7ed8f59b99
children 5071469303d4
line wrap: on
line diff
--- a/gen/typinf.cpp	Wed Nov 14 20:18:01 2007 +0100
+++ b/gen/typinf.cpp	Wed Nov 14 23:39:10 2007 +0100
@@ -243,14 +243,18 @@
     Logger::println("TypeInfoDeclaration::toObjFile()");
     LOG_SCOPE;
 
+    std::string mangled(mangle());
+
     Logger::println("type = '%s'", tinfo->toChars());
-    Logger::println("typeinfo mangle: %s", mangle());
+    Logger::println("typeinfo mangle: %s", mangled.c_str());
 
     // this is a declaration of a builtin __initZ var
     if (tinfo->builtinTypeInfo()) {
-        llvmValue = LLVM_D_GetRuntimeGlobal(gIR->module, mangle());
+        llvmValue = LLVM_D_GetRuntimeGlobal(gIR->module, mangled.c_str());
         assert(llvmValue);
-        Logger::cout() << "Got typeinfo var:" << '\n' << *llvmValue << '\n';
+        mangled.append("__TYPE");
+        gIR->module->addTypeName(mangled, llvmValue->getType()->getContainedType(0));
+        Logger::println("Got typeinfo var: %s", llvmValue->getName().c_str());
     }
     // custom typedef
     else {