diff --git a/include/llvm/CodeGen/MachineCodeForInstruction.h b/include/llvm/CodeGen/MachineCodeForInstruction.h index 2193a80e529..f4ec42dbf3d 100644 --- a/include/llvm/CodeGen/MachineCodeForInstruction.h +++ b/include/llvm/CodeGen/MachineCodeForInstruction.h @@ -23,12 +23,14 @@ class MachineInstr; class Instruction; class Value; +class CallArgsDescriptor; extern AnnotationID MCFI_AID; class MachineCodeForInstruction : public Annotation { - std::vector tempVec; // used by m/c instr but not VM instr - std::vector Contents; + std::vector tempVec; // used by m/c instr but not VM instr + std::vector Contents; // the machine instr for this VM instr + CallArgsDescriptor* callArgsDesc; // only used for CALL instructions public: MachineCodeForInstruction() : Annotation(MCFI_AID) {} ~MachineCodeForInstruction(); @@ -81,6 +83,9 @@ public: tempVec.push_back(tmp); return *this; } + + void setCallArgsDescriptor(CallArgsDescriptor* desc) { callArgsDesc = desc; } + CallArgsDescriptor* getCallArgsDescriptor() const { return callArgsDesc; } }; #endif diff --git a/lib/CodeGen/MachineCodeForInstruction.cpp b/lib/CodeGen/MachineCodeForInstruction.cpp index f3080628ee8..7b2fb75c653 100644 --- a/lib/CodeGen/MachineCodeForInstruction.cpp +++ b/lib/CodeGen/MachineCodeForInstruction.cpp @@ -17,6 +17,7 @@ #include "llvm/CodeGen/MachineCodeForInstruction.h" #include "llvm/CodeGen/MachineInstr.h" +#include "llvm/CodeGen/MachineInstrAnnot.h" #include "llvm/CodeGen/InstrSelection.h" AnnotationID MCFI_AID( @@ -55,4 +56,8 @@ MachineCodeForInstruction::~MachineCodeForInstruction() // Free the MachineInstr objects allocated, if any. for (unsigned i=0, N = size(); i < N; i++) delete (*this)[i]; + + // Free the CallArgsDescriptor if it exists. + if (callArgsDesc) + delete callArgsDesc; } diff --git a/lib/Target/SparcV9/MachineCodeForInstruction.h b/lib/Target/SparcV9/MachineCodeForInstruction.h index 2193a80e529..f4ec42dbf3d 100644 --- a/lib/Target/SparcV9/MachineCodeForInstruction.h +++ b/lib/Target/SparcV9/MachineCodeForInstruction.h @@ -23,12 +23,14 @@ class MachineInstr; class Instruction; class Value; +class CallArgsDescriptor; extern AnnotationID MCFI_AID; class MachineCodeForInstruction : public Annotation { - std::vector tempVec; // used by m/c instr but not VM instr - std::vector Contents; + std::vector tempVec; // used by m/c instr but not VM instr + std::vector Contents; // the machine instr for this VM instr + CallArgsDescriptor* callArgsDesc; // only used for CALL instructions public: MachineCodeForInstruction() : Annotation(MCFI_AID) {} ~MachineCodeForInstruction(); @@ -81,6 +83,9 @@ public: tempVec.push_back(tmp); return *this; } + + void setCallArgsDescriptor(CallArgsDescriptor* desc) { callArgsDesc = desc; } + CallArgsDescriptor* getCallArgsDescriptor() const { return callArgsDesc; } }; #endif