[svn r123] Fixed some typeinfo module name mismatches.

Fixed D-style varargs returning through pointer.
Fixed converting nested function to delegate.
Added std.string and std.format to Phobos.
This commit is contained in:
Tomas Lindquist Olsen
2007-11-26 06:45:13 +01:00
parent 26beb7f43d
commit 282f60e4a0
11 changed files with 61 additions and 27 deletions

View File

@@ -396,9 +396,16 @@ void DtoDeclareFunction(FuncDeclaration* fdecl)
assert(fdecl->llvmThisVar);
++iarg;
}
int varargs = -1;
if (f->linkage == LINKd && f->varargs == 1)
varargs = 0;
if (f->linkage == LINKd && f->varargs == 1) {
iarg->setName("_arguments");
fdecl->llvmArguments = iarg;
++iarg;
iarg->setName("_argptr");
fdecl->llvmArgPtr = iarg;
++iarg;
}
for (; iarg != func->arg_end(); ++iarg)
{
Argument* arg = Argument::getNth(f->parameters, k++);
@@ -410,19 +417,6 @@ void DtoDeclareFunction(FuncDeclaration* fdecl)
}
iarg->setName(arg->ident->toChars());
}
else if (!arg && varargs >= 0) {
if (varargs == 0) {
iarg->setName("_arguments");
fdecl->llvmArguments = iarg;
}
else if (varargs == 1) {
iarg->setName("_argptr");
fdecl->llvmArgPtr = iarg;
}
else
assert(0);
varargs++;
}
else {
iarg->setName("unnamed");
}