diff options
Diffstat (limited to 'lib/Target')
| -rw-r--r-- | lib/Target/ARM/ARMRegisterInfo.cpp | 7 | ||||
| -rw-r--r-- | lib/Target/ARM/ARMRegisterInfo.h | 2 | ||||
| -rw-r--r-- | lib/Target/Alpha/AlphaRegisterInfo.cpp | 4 | ||||
| -rw-r--r-- | lib/Target/Alpha/AlphaRegisterInfo.h | 2 | ||||
| -rw-r--r-- | lib/Target/IA64/IA64RegisterInfo.cpp | 4 | ||||
| -rw-r--r-- | lib/Target/IA64/IA64RegisterInfo.h | 2 | ||||
| -rw-r--r-- | lib/Target/PowerPC/PPCRegisterInfo.cpp | 4 | ||||
| -rw-r--r-- | lib/Target/PowerPC/PPCRegisterInfo.h | 2 | ||||
| -rw-r--r-- | lib/Target/Sparc/SparcRegisterInfo.cpp | 4 | ||||
| -rw-r--r-- | lib/Target/Sparc/SparcRegisterInfo.h | 2 | ||||
| -rw-r--r-- | lib/Target/X86/X86RegisterInfo.cpp | 4 | ||||
| -rw-r--r-- | lib/Target/X86/X86RegisterInfo.h | 2 | 
12 files changed, 25 insertions, 14 deletions
| diff --git a/lib/Target/ARM/ARMRegisterInfo.cpp b/lib/Target/ARM/ARMRegisterInfo.cpp index bfb8266..4fd0f89 100644 --- a/lib/Target/ARM/ARMRegisterInfo.cpp +++ b/lib/Target/ARM/ARMRegisterInfo.cpp @@ -689,7 +689,7 @@ unsigned findScratchRegister(RegScavenger *RS, const TargetRegisterClass *RC,  }  void ARMRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, -                                          RegScavenger *RS) const{ +                                          int SPAdj, RegScavenger *RS) const{    unsigned i = 0;    MachineInstr &MI = *II;    MachineBasicBlock &MBB = *MI.getParent(); @@ -705,7 +705,7 @@ void ARMRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,    unsigned FrameReg = ARM::SP;    int FrameIndex = MI.getOperand(i).getFrameIndex();    int Offset = MF.getFrameInfo()->getObjectOffset(FrameIndex) +  -               MF.getFrameInfo()->getStackSize(); +               MF.getFrameInfo()->getStackSize() + SPAdj;    if (AFI->isGPRCalleeSavedArea1Frame(FrameIndex))      Offset -= AFI->getGPRCalleeSavedArea1Offset(); @@ -714,6 +714,7 @@ void ARMRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,    else if (AFI->isDPRCalleeSavedAreaFrame(FrameIndex))      Offset -= AFI->getDPRCalleeSavedAreaOffset();    else if (hasFP(MF)) { +    assert(SPAdj == 0 && "Unexpected");      // There is alloca()'s in this function, must reference off the frame      // pointer instead.      FrameReg = getFrameRegister(MF); @@ -988,7 +989,7 @@ void ARMRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,      unsigned ScratchReg = findScratchRegister(RS, &ARM::GPRRegClass, AFI);      if (ScratchReg == 0)        // No register is "free". Scavenge a register. -      ScratchReg = RS->scavengeRegister(&ARM::GPRRegClass, II); +      ScratchReg = RS->scavengeRegister(&ARM::GPRRegClass, II, SPAdj);      emitARMRegPlusImmediate(MBB, II, ScratchReg, FrameReg,                              isSub ? -Offset : Offset, TII);      MI.getOperand(i).ChangeToRegister(ScratchReg, false, false, true); diff --git a/lib/Target/ARM/ARMRegisterInfo.h b/lib/Target/ARM/ARMRegisterInfo.h index 95619ec..261cc88 100644 --- a/lib/Target/ARM/ARMRegisterInfo.h +++ b/lib/Target/ARM/ARMRegisterInfo.h @@ -85,7 +85,7 @@ public:                                       MachineBasicBlock::iterator I) const;    void eliminateFrameIndex(MachineBasicBlock::iterator II, -                           RegScavenger *RS = NULL) const; +                           int SPAdj, RegScavenger *RS = NULL) const;    void processFunctionBeforeCalleeSavedScan(MachineFunction &MF,                                              RegScavenger *RS = NULL) const; diff --git a/lib/Target/Alpha/AlphaRegisterInfo.cpp b/lib/Target/Alpha/AlphaRegisterInfo.cpp index 717b538..72a8407 100644 --- a/lib/Target/Alpha/AlphaRegisterInfo.cpp +++ b/lib/Target/Alpha/AlphaRegisterInfo.cpp @@ -255,7 +255,9 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,  //<- SP  void AlphaRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, -                                            RegScavenger *RS) const { +                                            int SPAdj, RegScavenger *RS) const { +  assert(SPAdj == 0 && "Unexpected"); +    unsigned i = 0;    MachineInstr &MI = *II;    MachineBasicBlock &MBB = *MI.getParent(); diff --git a/lib/Target/Alpha/AlphaRegisterInfo.h b/lib/Target/Alpha/AlphaRegisterInfo.h index 0fd82dd..07fea9e 100644 --- a/lib/Target/Alpha/AlphaRegisterInfo.h +++ b/lib/Target/Alpha/AlphaRegisterInfo.h @@ -61,7 +61,7 @@ struct AlphaRegisterInfo : public AlphaGenRegisterInfo {                                       MachineBasicBlock::iterator I) const;    void eliminateFrameIndex(MachineBasicBlock::iterator II, -                           RegScavenger *RS = NULL) const; +                           int SPAdj, RegScavenger *RS = NULL) const;    //void processFunctionBeforeFrameFinalized(MachineFunction &MF) const; diff --git a/lib/Target/IA64/IA64RegisterInfo.cpp b/lib/Target/IA64/IA64RegisterInfo.cpp index e7e1441..41a15fd 100644 --- a/lib/Target/IA64/IA64RegisterInfo.cpp +++ b/lib/Target/IA64/IA64RegisterInfo.cpp @@ -177,7 +177,9 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,  }  void IA64RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, -                                           RegScavenger *RS)const{ +                                           int SPAdj, RegScavenger *RS)const{ +  assert(SPAdj == 0 && "Unexpected"); +    unsigned i = 0;    MachineInstr &MI = *II;    MachineBasicBlock &MBB = *MI.getParent(); diff --git a/lib/Target/IA64/IA64RegisterInfo.h b/lib/Target/IA64/IA64RegisterInfo.h index 89d9c5e..d90f321 100644 --- a/lib/Target/IA64/IA64RegisterInfo.h +++ b/lib/Target/IA64/IA64RegisterInfo.h @@ -60,7 +60,7 @@ struct IA64RegisterInfo : public IA64GenRegisterInfo {                                       MachineBasicBlock::iterator MI) const;    void eliminateFrameIndex(MachineBasicBlock::iterator MI, -                           RegScavenger *RS = NULL) const; +                           int SPAdj, RegScavenger *RS = NULL) const;    void emitPrologue(MachineFunction &MF) const;    void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; diff --git a/lib/Target/PowerPC/PPCRegisterInfo.cpp b/lib/Target/PowerPC/PPCRegisterInfo.cpp index 89fa90b..a788a75 100644 --- a/lib/Target/PowerPC/PPCRegisterInfo.cpp +++ b/lib/Target/PowerPC/PPCRegisterInfo.cpp @@ -589,7 +589,9 @@ void PPCRegisterInfo::lowerDynamicAlloc(MachineBasicBlock::iterator II) const {  }  void PPCRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, -                                          RegScavenger *RS) const { +                                          int SPAdj, RegScavenger *RS) const { +  assert(SPAdj == 0 && "Unexpected"); +    // Get the instruction.    MachineInstr &MI = *II;    // Get the instruction's basic block. diff --git a/lib/Target/PowerPC/PPCRegisterInfo.h b/lib/Target/PowerPC/PPCRegisterInfo.h index d8e8025..0caf106 100644 --- a/lib/Target/PowerPC/PPCRegisterInfo.h +++ b/lib/Target/PowerPC/PPCRegisterInfo.h @@ -80,7 +80,7 @@ public:    void lowerDynamicAlloc(MachineBasicBlock::iterator II) const;    void eliminateFrameIndex(MachineBasicBlock::iterator II, -                           RegScavenger *RS = NULL) const; +                           int SPAdj, RegScavenger *RS = NULL) const;    /// determineFrameLayout - Determine the size of the frame and maximum call    /// frame size. diff --git a/lib/Target/Sparc/SparcRegisterInfo.cpp b/lib/Target/Sparc/SparcRegisterInfo.cpp index 521e9b9..ded1bcd 100644 --- a/lib/Target/Sparc/SparcRegisterInfo.cpp +++ b/lib/Target/Sparc/SparcRegisterInfo.cpp @@ -165,7 +165,9 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,  }  void SparcRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, -                                            RegScavenger *RS) const { +                                            int SPAdj, RegScavenger *RS) const { +  assert(SPAdj == 0 && "Unexpected"); +    unsigned i = 0;    MachineInstr &MI = *II;    while (!MI.getOperand(i).isFrameIndex()) { diff --git a/lib/Target/Sparc/SparcRegisterInfo.h b/lib/Target/Sparc/SparcRegisterInfo.h index 520836e..b7ea4d6 100644 --- a/lib/Target/Sparc/SparcRegisterInfo.h +++ b/lib/Target/Sparc/SparcRegisterInfo.h @@ -64,7 +64,7 @@ struct SparcRegisterInfo : public SparcGenRegisterInfo {                                       MachineBasicBlock::iterator I) const;    void eliminateFrameIndex(MachineBasicBlock::iterator II, -                           RegScavenger *RS = NULL) const; +                           int SPAdj, RegScavenger *RS = NULL) const;    void processFunctionBeforeFrameFinalized(MachineFunction &MF) const; diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp index 52ab7f0..e5f57ca 100644 --- a/lib/Target/X86/X86RegisterInfo.cpp +++ b/lib/Target/X86/X86RegisterInfo.cpp @@ -986,7 +986,9 @@ eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,  }  void X86RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, -                                          RegScavenger *RS) const{ +                                          int SPAdj, RegScavenger *RS) const{ +  assert(SPAdj == 0 && "Unexpected"); +    unsigned i = 0;    MachineInstr &MI = *II;    MachineFunction &MF = *MI.getParent()->getParent(); diff --git a/lib/Target/X86/X86RegisterInfo.h b/lib/Target/X86/X86RegisterInfo.h index dbf7bf0..cf83f99 100644 --- a/lib/Target/X86/X86RegisterInfo.h +++ b/lib/Target/X86/X86RegisterInfo.h @@ -94,7 +94,7 @@ public:                                       MachineBasicBlock::iterator MI) const;    void eliminateFrameIndex(MachineBasicBlock::iterator MI, -                           RegScavenger *RS = NULL) const; +                           int SPAdj, RegScavenger *RS = NULL) const;    void processFunctionBeforeFrameFinalized(MachineFunction &MF) const; | 
