diff --git a/lib/Target/Sparc/SparcV8ISelSimple.cpp b/lib/Target/Sparc/SparcV8ISelSimple.cpp
index f596669..bfb0c3e 100644
--- a/lib/Target/Sparc/SparcV8ISelSimple.cpp
+++ b/lib/Target/Sparc/SparcV8ISelSimple.cpp
@@ -343,10 +343,30 @@
     }
   }
 
-  // Copy args out of their incoming hard regs or stack slots into virtual regs.
   const unsigned *IAREnd = &IncomingArgRegs[6];
   const unsigned *IAR = &IncomingArgRegs[0];
   unsigned ArgOffset = 68;
+
+  // Store registers onto stack if this is a varargs function. 
+  // FIXME: This doesn't really pertain to "loading arguments into
+  // virtual registers", so it's not clear that it really belongs here.
+  // FIXME: We could avoid storing any args onto the stack that don't 
+  // need to be in memory, because they come before the ellipsis in the
+  // parameter list (and thus could never be accessed through va_arg).
+  if (LF->getFunctionType ()->isVarArg ()) {
+    for (unsigned i = 0; i < 6; ++i) {
+      int FI = F->getFrameInfo()->CreateFixedObject(4, ArgOffset);
+      assert (IAR != IAREnd
+              && "About to dereference past end of IncomingArgRegs");
+      BuildMI (BB, V8::ST, 3).addFrameIndex (FI).addSImm (0).addReg (*IAR++);
+      ArgOffset += 4;
+    }
+    // Reset the pointers now that we're done.
+    ArgOffset = 68;
+    IAR = &IncomingArgRegs[0];
+  }
+
+  // Copy args out of their incoming hard regs or stack slots into virtual regs.
   for (Function::aiterator I = LF->abegin(), E = LF->aend(); I != E; ++I) {
     Argument &A = *I;
     unsigned ArgReg = getReg (A);
diff --git a/lib/Target/SparcV8/SparcV8ISelSimple.cpp b/lib/Target/SparcV8/SparcV8ISelSimple.cpp
index f596669..bfb0c3e 100644
--- a/lib/Target/SparcV8/SparcV8ISelSimple.cpp
+++ b/lib/Target/SparcV8/SparcV8ISelSimple.cpp
@@ -343,10 +343,30 @@
     }
   }
 
-  // Copy args out of their incoming hard regs or stack slots into virtual regs.
   const unsigned *IAREnd = &IncomingArgRegs[6];
   const unsigned *IAR = &IncomingArgRegs[0];
   unsigned ArgOffset = 68;
+
+  // Store registers onto stack if this is a varargs function. 
+  // FIXME: This doesn't really pertain to "loading arguments into
+  // virtual registers", so it's not clear that it really belongs here.
+  // FIXME: We could avoid storing any args onto the stack that don't 
+  // need to be in memory, because they come before the ellipsis in the
+  // parameter list (and thus could never be accessed through va_arg).
+  if (LF->getFunctionType ()->isVarArg ()) {
+    for (unsigned i = 0; i < 6; ++i) {
+      int FI = F->getFrameInfo()->CreateFixedObject(4, ArgOffset);
+      assert (IAR != IAREnd
+              && "About to dereference past end of IncomingArgRegs");
+      BuildMI (BB, V8::ST, 3).addFrameIndex (FI).addSImm (0).addReg (*IAR++);
+      ArgOffset += 4;
+    }
+    // Reset the pointers now that we're done.
+    ArgOffset = 68;
+    IAR = &IncomingArgRegs[0];
+  }
+
+  // Copy args out of their incoming hard regs or stack slots into virtual regs.
   for (Function::aiterator I = LF->abegin(), E = LF->aend(); I != E; ++I) {
     Argument &A = *I;
     unsigned ArgReg = getReg (A);
