corrected insertCode4Spilled ... bug.
authorRuchira Sasanka <sasanka@students.uiuc.edu>
Thu, 8 Nov 2001 19:11:30 +0000 (19:11 +0000)
committerRuchira Sasanka <sasanka@students.uiuc.edu>
Thu, 8 Nov 2001 19:11:30 +0000 (19:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1212 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp

index 3198e66268eca7bd59ec838e9e3179b5102ee8ec..824b02e0b9107d257fdea2f1a170a655888bd558 100644 (file)
@@ -526,11 +526,20 @@ void PhyRegAlloc::insertCode4SpilledLR(const LiveRange *LR,
   int TmpOff = 
     mcInfo.pushTempValue(TM, TM.findOptimalStorageSize(LR->getType()));
   
-  MachineInstr *MIBef,  *AdIMid, *MIAft;
+  MachineInstr *MIBef=NULL,  *AdIMid=NULL, *MIAft=NULL;
   int TmpReg;
 
   TmpReg = getUsableRegAtMI(RC, RegType, MInst,LVSetBef, MIBef, MIAft);
   TmpReg = MRI.getUnifiedRegNum( RC->getID(), TmpReg );
+
+
+  // get the added instructions for this instruciton
+  AddedInstrns *AI = AddedInstrMap[ MInst ];
+  if ( !AI ) { 
+    AI = new AddedInstrns();
+    AddedInstrMap[ MInst ] = AI;
+  }
+
   
   
   if( !isDef ) {
@@ -542,13 +551,13 @@ void PhyRegAlloc::insertCode4SpilledLR(const LiveRange *LR,
     AdIMid = MRI.cpMem2RegMI(MRI.getFramePointer(), SpillOff, TmpReg, RegType);
 
     if( MIBef )
-      ((AddedInstrMap[MInst])->InstrnsBefore).push_back(MIBef);
+      (AI->InstrnsBefore).push_back(MIBef);
 
-    ((AddedInstrMap[MInst])->InstrnsBefore).push_back(AdIMid);
+    (AI->InstrnsBefore).push_back(AdIMid);
 
     if( MIAft)
-      ((AddedInstrMap[MInst])->InstrnsAfter).push_front(MIAft);
-
+      (AI->InstrnsAfter).push_front(MIAft);
+    
     
   } 
   else {   // if this is a Def
@@ -560,12 +569,12 @@ void PhyRegAlloc::insertCode4SpilledLR(const LiveRange *LR,
     AdIMid = MRI.cpReg2MemMI(TmpReg, MRI.getFramePointer(), SpillOff, RegType);
 
     if( MIBef )
-      ((AddedInstrMap[MInst])->InstrnsBefore).push_back(MIBef);
+      (AI->InstrnsBefore).push_back(MIBef);
 
-    ((AddedInstrMap[MInst])->InstrnsBefore).push_back(AdIMid);
+    (AI->InstrnsBefore).push_back(AdIMid);
 
     if( MIAft)
-      ((AddedInstrMap[MInst])->InstrnsAfter).push_front(MIAft);
+      (AI->InstrnsAfter).push_front(MIAft);
 
   }  // if !DEF
 
index 3198e66268eca7bd59ec838e9e3179b5102ee8ec..824b02e0b9107d257fdea2f1a170a655888bd558 100644 (file)
@@ -526,11 +526,20 @@ void PhyRegAlloc::insertCode4SpilledLR(const LiveRange *LR,
   int TmpOff = 
     mcInfo.pushTempValue(TM, TM.findOptimalStorageSize(LR->getType()));
   
-  MachineInstr *MIBef,  *AdIMid, *MIAft;
+  MachineInstr *MIBef=NULL,  *AdIMid=NULL, *MIAft=NULL;
   int TmpReg;
 
   TmpReg = getUsableRegAtMI(RC, RegType, MInst,LVSetBef, MIBef, MIAft);
   TmpReg = MRI.getUnifiedRegNum( RC->getID(), TmpReg );
+
+
+  // get the added instructions for this instruciton
+  AddedInstrns *AI = AddedInstrMap[ MInst ];
+  if ( !AI ) { 
+    AI = new AddedInstrns();
+    AddedInstrMap[ MInst ] = AI;
+  }
+
   
   
   if( !isDef ) {
@@ -542,13 +551,13 @@ void PhyRegAlloc::insertCode4SpilledLR(const LiveRange *LR,
     AdIMid = MRI.cpMem2RegMI(MRI.getFramePointer(), SpillOff, TmpReg, RegType);
 
     if( MIBef )
-      ((AddedInstrMap[MInst])->InstrnsBefore).push_back(MIBef);
+      (AI->InstrnsBefore).push_back(MIBef);
 
-    ((AddedInstrMap[MInst])->InstrnsBefore).push_back(AdIMid);
+    (AI->InstrnsBefore).push_back(AdIMid);
 
     if( MIAft)
-      ((AddedInstrMap[MInst])->InstrnsAfter).push_front(MIAft);
-
+      (AI->InstrnsAfter).push_front(MIAft);
+    
     
   } 
   else {   // if this is a Def
@@ -560,12 +569,12 @@ void PhyRegAlloc::insertCode4SpilledLR(const LiveRange *LR,
     AdIMid = MRI.cpReg2MemMI(TmpReg, MRI.getFramePointer(), SpillOff, RegType);
 
     if( MIBef )
-      ((AddedInstrMap[MInst])->InstrnsBefore).push_back(MIBef);
+      (AI->InstrnsBefore).push_back(MIBef);
 
-    ((AddedInstrMap[MInst])->InstrnsBefore).push_back(AdIMid);
+    (AI->InstrnsBefore).push_back(AdIMid);
 
     if( MIAft)
-      ((AddedInstrMap[MInst])->InstrnsAfter).push_front(MIAft);
+      (AI->InstrnsAfter).push_front(MIAft);
 
   }  // if !DEF