mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-02-08 07:53:14 +01:00
[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:
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user