Re-fix bug: Put back MachineCodeForInstruction::dropAllReferences.
authorVikram S. Adve <vadve@cs.uiuc.edu>
Sun, 24 Mar 2002 03:40:11 +0000 (03:40 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Sun, 24 Mar 2002 03:40:11 +0000 (03:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1970 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MachineCodeForInstruction.cpp

index 97a53752e13de1a3945c23f6295ab2af43ac5c35..a4ebbec187f563017592a7da4bd61990d2183ab0 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "llvm/CodeGen/MachineCodeForInstruction.h"
 #include "llvm/CodeGen/MachineInstr.h"
+#include "llvm/CodeGen/InstrSelection.h"
 #include "llvm/Instruction.h"
 
 static AnnotationID MCFI_AID(
@@ -35,18 +36,37 @@ static struct Initializer {
   }
 } RegisterAID;
 
-MachineCodeForInstruction &MachineCodeForInstruction::get(const Instruction *I){
+
+MachineCodeForInstruction&
+MachineCodeForInstruction::get(const Instruction *I){
   return *(MachineCodeForInstruction*)I->getOrCreateAnnotation(MCFI_AID);
 }
 
-void MachineCodeForInstruction::destroy(const Instruction *I) {
+
+void
+MachineCodeForInstruction::destroy(const Instruction *I) {
   I->deleteAnnotation(MCFI_AID);
 }
 
 
-MachineCodeForInstruction::MachineCodeForInstruction() : Annotation(MCFI_AID) {}
+void
+MachineCodeForInstruction::dropAllReferences()
+{
+  for (unsigned i=0, N=tempVec.size(); i < N; i++)
+    cast<TmpInstruction>(tempVec[i])->dropAllReferences();
+}
+
+
+MachineCodeForInstruction::MachineCodeForInstruction()
+  : Annotation(MCFI_AID)
+{}
 
-MachineCodeForInstruction::~MachineCodeForInstruction() {
+
+MachineCodeForInstruction::~MachineCodeForInstruction()
+{
+  // Let go of all uses in temp. instructions
+  dropAllReferences();
+  
   // Free the Value objects created to hold intermediate values
   for (unsigned i=0, N=tempVec.size(); i < N; i++)
     delete tempVec[i];