diff dmd/func.c @ 57:a9d29e9f1fed trunk

[svn r61] Added support for D-style variadic functions :)
author lindquist
date Thu, 25 Oct 2007 02:39:53 +0200
parents 6fcc08a4d406
children d8dd47ef3973
line wrap: on
line diff
--- a/dmd/func.c	Wed Oct 24 22:26:37 2007 +0200
+++ b/dmd/func.c	Thu Oct 25 02:39:53 2007 +0200
@@ -76,6 +76,8 @@
     llvmQueued = false;
     llvmThisVar = NULL;
     llvmNested = NULL;
+    llvmArguments = NULL;
+    llvmArgPtr = NULL;
 }
 
 Dsymbol *FuncDeclaration::syntaxCopy(Dsymbol *s)
@@ -1051,6 +1053,8 @@
 		}
 	    }
 
+// we'll handle variadics ourselves
+#if !IN_LLVM
 	    if (argptr)
 	    {	// Initialize _argptr to point past non-variadic arg
 #if IN_GCC
@@ -1075,7 +1079,7 @@
 		e = new AssignExp(0, e1, e);
 		e->type = t;
 		a->push(new ExpStatement(0, e));
-#endif
+#endif // IN_GCC
 	    }
 
 	    if (_arguments)
@@ -1091,6 +1095,8 @@
 		a->push(new ExpStatement(0, e));
 	    }
 
+#endif // !IN_LLVM
+
 	    // Merge contracts together with body into one compound statement
 
 #ifdef _DH