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");
         }