diff --git a/include/llvm/CodeGen/MachineInstrAnnot.h b/include/llvm/CodeGen/MachineInstrAnnot.h
index bd3f733..be3aaac 100644
--- a/include/llvm/CodeGen/MachineInstrAnnot.h
+++ b/include/llvm/CodeGen/MachineInstrAnnot.h
@@ -68,12 +68,12 @@
   unsigned int    getNumArgs() const          { return argInfoVec.size(); }
   CallArgInfo&    getArgInfo(unsigned int op) { assert(op < argInfoVec.size());
                                                 return argInfoVec[op]; }
-  const CallInst* getReturnValue() const      { return callInstr; }
+  const CallInst* getReturnValue() const;
   const Value*    getIndirectFuncPtr() const  { return funcPtr; }
   TmpInstruction* getReturnAddrReg() const    { return retAddrReg; }
   bool            isVarArgsFunc() const       { return isVarArgs; }
   bool            hasNoPrototype() const      { return noPrototype; }
-  
+
   // Annotation mechanism to annotate a MachineInstr with the descriptor.
   // This is not demand-driven because annotations can only be created
   // at restricted points during code generation.
diff --git a/lib/CodeGen/MachineInstrAnnot.cpp b/lib/CodeGen/MachineInstrAnnot.cpp
index 960c492..ef06445 100644
--- a/lib/CodeGen/MachineInstrAnnot.cpp
+++ b/lib/CodeGen/MachineInstrAnnot.cpp
@@ -30,3 +30,10 @@
   for (unsigned int i=1; i < numArgs; ++i)
     argInfoVec.push_back(CallArgInfo(callInstr->getOperand(i)));
 }
+
+
+const CallInst*
+CallArgsDescriptor::getReturnValue() const
+{
+  return (callInstr->getType() == Type::VoidTy? NULL : callInstr);
+}
diff --git a/lib/Target/SparcV9/MachineInstrAnnot.h b/lib/Target/SparcV9/MachineInstrAnnot.h
index bd3f733..be3aaac 100644
--- a/lib/Target/SparcV9/MachineInstrAnnot.h
+++ b/lib/Target/SparcV9/MachineInstrAnnot.h
@@ -68,12 +68,12 @@
   unsigned int    getNumArgs() const          { return argInfoVec.size(); }
   CallArgInfo&    getArgInfo(unsigned int op) { assert(op < argInfoVec.size());
                                                 return argInfoVec[op]; }
-  const CallInst* getReturnValue() const      { return callInstr; }
+  const CallInst* getReturnValue() const;
   const Value*    getIndirectFuncPtr() const  { return funcPtr; }
   TmpInstruction* getReturnAddrReg() const    { return retAddrReg; }
   bool            isVarArgsFunc() const       { return isVarArgs; }
   bool            hasNoPrototype() const      { return noPrototype; }
-  
+
   // Annotation mechanism to annotate a MachineInstr with the descriptor.
   // This is not demand-driven because annotations can only be created
   // at restricted points during code generation.
