refactor some code to avoid overloading the name 'usesLR' in
authorChris Lattner <sabre@nondot.org>
Sat, 8 Dec 2007 06:39:11 +0000 (06:39 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 8 Dec 2007 06:39:11 +0000 (06:39 +0000)
different places to mean different things.  Document what the
one in PPCFunctionInfo means and when it is valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44699 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCMachineFunctionInfo.h
lib/Target/PowerPC/PPCRegisterInfo.cpp
lib/Target/PowerPC/PPCRegisterInfo.h

index e227456e635990cc94a58c646555188064f100ac..bf1fea211b4a28022e9254e8c2b4d72cf43a4444 100644 (file)
@@ -39,8 +39,12 @@ public:
   int getFramePointerSaveIndex() const { return FramePointerSaveIndex; }
   void setFramePointerSaveIndex(int Idx) { FramePointerSaveIndex = Idx; }
   
+  /// UsesLR - This is set when the prolog/epilog inserter does its initial scan
+  /// of the function, it is true if the LR/LR8 register is ever explicitly
+  /// accessed/clobbered in the machine function (e.g. by calls and movpctolr,
+  /// which is used in PIC generation).
   void setUsesLR(bool U) { UsesLR = U; }
-  bool usesLR()          { return UsesLR; }
+  bool usesLR() const    { return UsesLR; }
 
 };
 
index f93c2ce9e0b06594634a901f564f41e1a7e8e6c4..679ca2e58f5ce6c6e738f968c092ef05540baaa7 100644 (file)
@@ -645,11 +645,13 @@ bool PPCRegisterInfo::hasFP(const MachineFunction &MF) const {
   return MFI->getStackSize() && needsFP(MF);
 }
 
-/// usesLR - Returns if the link registers (LR) has been used in the function.
-///
-bool PPCRegisterInfo::usesLR(MachineFunction &MF) const {
-  PPCFunctionInfo *FI = MF.getInfo<PPCFunctionInfo>();
-  return FI->usesLR();
+/// MustSaveLR - Return true if this function requires that we save the LR
+/// register onto the stack in the prolog and restore it in the epilog of the function.
+static bool MustSaveLR(const MachineFunction &MF) {
+  return MF.getInfo<PPCFunctionInfo>()->usesLR() || 
+         // FIXME: Anything that has a call should clobber the LR register,
+         // isn't this redundant??
+         MF.getFrameInfo()->hasCalls();
 }
 
 void PPCRegisterInfo::
@@ -1062,7 +1064,7 @@ void PPCRegisterInfo::emitPrologue(MachineFunction &MF) const {
   // Get operating system
   bool IsMachoABI = Subtarget.isMachoABI();
   // Check if the link register (LR) has been used.
-  bool UsesLR = MFI->hasCalls() || usesLR(MF);
+  bool UsesLR = MustSaveLR(MF);
   // Do we have a frame pointer for this function?
   bool HasFP = hasFP(MF) && FrameSize;
   
@@ -1226,7 +1228,7 @@ void PPCRegisterInfo::emitEpilogue(MachineFunction &MF,
   // Get operating system
   bool IsMachoABI = Subtarget.isMachoABI();
   // Check if the link register (LR) has been used.
-  bool UsesLR = MFI->hasCalls() || usesLR(MF);
+  bool UsesLR = MustSaveLR(MF);
   // Do we have a frame pointer for this function?
   bool HasFP = hasFP(MF) && FrameSize;
   
index 2106c6e667bb2961cbb6a6ff7e3697c08901f34d..b4a0415621e827c5dc0fad3df98795d821adcc8b 100644 (file)
@@ -96,10 +96,6 @@ public:
                                      MachineBasicBlock &MBB,
                                      MachineBasicBlock::iterator I) const;
 
-  /// usesLR - Returns if the link registers (LR) has been used in the function.
-  ///
-  bool usesLR(MachineFunction &MF) const;
-  
   void lowerDynamicAlloc(MachineBasicBlock::iterator II) const;
   void eliminateFrameIndex(MachineBasicBlock::iterator II,
                            int SPAdj, RegScavenger *RS = NULL) const;