diff --git a/llvm/lib/CodeGen/MachineInstrAnnot.cpp b/llvm/lib/CodeGen/MachineInstrAnnot.cpp
index b4809a6..27cf7ad 100644
--- a/llvm/lib/CodeGen/MachineInstrAnnot.cpp
+++ b/llvm/lib/CodeGen/MachineInstrAnnot.cpp
@@ -6,18 +6,17 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/CodeGen/MachineInstrAnnot.h"
-#include "llvm/Annotation.h"
+#include "llvm/CodeGen/InstrSelection.h"
+#include "llvm/CodeGen/InstrSelectionSupport.h"
+#include "llvm/CodeGen/MachineCodeForInstruction.h"
 #include "llvm/iOther.h"
 #include "llvm/Type.h"
 
-AnnotationID CallArgsDescriptor::AID(AnnotationManager::
-                                     getID("CodeGen::CallArgsDescriptor"));
 
 CallArgsDescriptor::CallArgsDescriptor(const CallInst* _callInstr,
                                        TmpInstruction* _retAddrReg,
                                        bool _isVarArgs, bool _noPrototype)
-  : Annotation(AID),
-    callInstr(_callInstr),
+  : callInstr(_callInstr),
     funcPtr(isa<Function>(_callInstr->getCalledValue())
             ? NULL : _callInstr->getCalledValue()),
     retAddrReg(_retAddrReg),
@@ -30,6 +29,10 @@
          && "Operand 0 is ignored in the loop below!");
   for (unsigned int i=1; i < numArgs; ++i)
     argInfoVec.push_back(CallArgInfo(callInstr->getOperand(i)));
+
+  // Enter this object in the MachineCodeForInstr object of the CallInst.
+  // This transfers ownership of this object.
+  MachineCodeForInstruction::get(callInstr).setCallArgsDescriptor(this); 
 }
 
 
@@ -38,3 +41,26 @@
 {
   return (callInstr->getType() == Type::VoidTy? NULL : callInstr);
 }
+
+
+// Mechanism to get the descriptor for a CALL MachineInstr.
+// We get the LLVM CallInstr from the ret. addr. register argument
+// of the CALL MachineInstr, then get the CallArgsDescriptor from the
+// MachineCodeForInstruction object for the CallInstr.
+// This is roundabout but avoids adding a new map or annotation just
+// to keep track of CallArgsDescriptors.
+// 
+CallArgsDescriptor *CallArgsDescriptor::get(const MachineInstr* MI)
+{
+  const TmpInstruction* retAddrReg =
+    cast<TmpInstruction>(MI->getImplicitRef(MI->getNumImplicitRefs()-1));
+  assert(retAddrReg->getNumOperands() == 1 &&
+         isa<CallInst>(retAddrReg->getOperand(0)) &&
+         "Order of implicit args of CALL instr. changed. FIX THIS CODE!");
+  const CallInst* callInstr = cast<CallInst>(retAddrReg->getOperand(0));
+
+  CallArgsDescriptor* desc =
+    MachineCodeForInstruction::get(callInstr).getCallArgsDescriptor(); 
+  assert(desc->getCallInst()==callInstr && "Incorrect call args descriptor?");
+  return desc;
+}
