aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuchira Sasanka <sasanka@students.uiuc.edu>2001-11-08 19:11:30 +0000
committerRuchira Sasanka <sasanka@students.uiuc.edu>2001-11-08 19:11:30 +0000
commit226f1f0b22853a879d142b848fa22e407efc9bd8 (patch)
treefd5fc0e99abace93c9900297e3f66a9f02cce368
parent19560c3fd345effb679720849a7ec74bd65f7c43 (diff)
corrected insertCode4Spilled ... bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1212 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/RegAlloc/PhyRegAlloc.cpp25
-rw-r--r--lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp25
2 files changed, 34 insertions, 16 deletions
diff --git a/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp b/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
index 3198e66268..824b02e0b9 100644
--- a/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
+++ b/lib/CodeGen/RegAlloc/PhyRegAlloc.cpp
@@ -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
diff --git a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
index 3198e66268..824b02e0b9 100644
--- a/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
+++ b/lib/Target/SparcV9/RegAlloc/PhyRegAlloc.cpp
@@ -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