Mercurial > projects > ldc
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 {