aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2002-10-29 19:38:46 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2002-10-29 19:38:46 +0000
commite68a3435ee6a695f1fd4b80c3d482e396001e0f5 (patch)
tree532b87909867c26a3b4681166edc929031c0fe0c
parentaabb595c4f389e1cb9e0511f66f10b24108a2ada (diff)
Move CallArgsDescriptor into this class instead of making it an
annotation on the machine instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4398 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/CodeGen/MachineCodeForInstruction.h9
-rw-r--r--lib/CodeGen/MachineCodeForInstruction.cpp5
-rw-r--r--lib/Target/SparcV9/MachineCodeForInstruction.h9
3 files changed, 19 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/MachineCodeForInstruction.h b/include/llvm/CodeGen/MachineCodeForInstruction.h
index 2193a80e52..f4ec42dbf3 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<Value*> tempVec; // used by m/c instr but not VM instr
- std::vector<MachineInstr*> Contents;
+ std::vector<Value*> tempVec; // used by m/c instr but not VM instr
+ std::vector<MachineInstr*> 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 f3080628ee..7b2fb75c65 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 2193a80e52..f4ec42dbf3 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<Value*> tempVec; // used by m/c instr but not VM instr
- std::vector<MachineInstr*> Contents;
+ std::vector<Value*> tempVec; // used by m/c instr but not VM instr
+ std::vector<MachineInstr*> 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