diff --git a/lib/ExecutionEngine/Interpreter/Execution.cpp b/lib/ExecutionEngine/Interpreter/Execution.cpp
index 5379c04..953b0b4 100644
--- a/lib/ExecutionEngine/Interpreter/Execution.cpp
+++ b/lib/ExecutionEngine/Interpreter/Execution.cpp
@@ -774,9 +774,13 @@
     switch (F->getIntrinsicID()) {
     case Intrinsic::not_intrinsic:
       break;
-    case Intrinsic::va_start:  // va_start: implemented by getFirstVarArg()
-      SetValue(CS.getInstruction(), getFirstVarArg(), SF);
+    case Intrinsic::va_start: { // va_start
+      GenericValue ArgIndex;
+      ArgIndex.UIntPairVal.first = ECStack.size() - 1;
+      ArgIndex.UIntPairVal.second = 0;
+      SetValue(CS.getInstruction(), ArgIndex, SF);
       return;
+    }
     case Intrinsic::va_end:    // va_end is a noop for the interpreter
       return;
     case Intrinsic::va_copy:   // va_copy: dest = src
@@ -960,14 +964,12 @@
 void Interpreter::visitVANextInst(VANextInst &I) {
   ExecutionContext &SF = ECStack.back();
 
-  // Get the incoming valist parameter.  LLI treats the valist as a pointer 
-  // to the next argument.
+  // Get the incoming valist parameter.  LLI treats the valist as a
+  // (ec-stack-depth var-arg-index) pair.
   GenericValue VAList = getOperandValue(I.getOperand(0), SF);
   
   // Move the pointer to the next vararg.
-  GenericValue *ArgPtr = (GenericValue *) GVTOP (VAList);
-  ++ArgPtr;
-  VAList = PTOGV (ArgPtr);
+  ++VAList.UIntPairVal.second;
   SetValue(&I, VAList, SF);
 }
 
@@ -977,11 +979,12 @@
 void Interpreter::visitVAArgInst(VAArgInst &I) {
   ExecutionContext &SF = ECStack.back();
 
-  // Get the incoming valist parameter.  LLI treats the valist as a pointer 
-  // to the next argument.
+  // Get the incoming valist parameter.  LLI treats the valist as a
+  // (ec-stack-depth var-arg-index) pair.
   GenericValue VAList = getOperandValue(I.getOperand(0), SF);
-  assert (GVTOP (VAList) != 0 && "VAList was null in vaarg instruction");
-  GenericValue Dest, Src = *(GenericValue *) GVTOP (VAList);
+  GenericValue Dest;
+  GenericValue Src = ECStack[VAList.UIntPairVal.first]
+	.VarArgs[VAList.UIntPairVal.second];
   const Type *Ty = I.getType();
   switch (Ty->getPrimitiveID()) {
     IMPLEMENT_VAARG(UByte);
