Mercurial > projects > ldc
diff gen/functions.cpp @ 119:79c9ac745fbc trunk
[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.
author | lindquist |
---|---|
date | Mon, 26 Nov 2007 06:45:13 +0100 |
parents | 56a21f3e5d3e |
children | 9c79b61fb638 |
line wrap: on
line diff
--- a/gen/functions.cpp Mon Nov 26 05:50:33 2007 +0100 +++ b/gen/functions.cpp Mon Nov 26 06:45:13 2007 +0100 @@ -396,9 +396,16 @@ 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 @@ } 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"); }