[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.
This commit is contained in:
Tomas Lindquist Olsen
2007-11-14 23:39:10 +01:00
parent 46d8929fb6
commit 302015d7e8
13 changed files with 163 additions and 120 deletions

View File

@@ -243,14 +243,18 @@ void TypeInfoDeclaration::toObjFile()
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 {