diff --git a/lib/Target/PowerPC/PPCMachineFunctionInfo.h b/lib/Target/PowerPC/PPCMachineFunctionInfo.h
index e227456..bf1fea2 100644
--- a/lib/Target/PowerPC/PPCMachineFunctionInfo.h
+++ b/lib/Target/PowerPC/PPCMachineFunctionInfo.h
@@ -39,8 +39,12 @@
   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; }
 
 };
 
diff --git a/lib/Target/PowerPC/PPCRegisterInfo.cpp b/lib/Target/PowerPC/PPCRegisterInfo.cpp
index f93c2ce..679ca2e 100644
--- a/lib/Target/PowerPC/PPCRegisterInfo.cpp
+++ b/lib/Target/PowerPC/PPCRegisterInfo.cpp
@@ -645,11 +645,13 @@
   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 @@
   // 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 @@
   // 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;
   
diff --git a/lib/Target/PowerPC/PPCRegisterInfo.h b/lib/Target/PowerPC/PPCRegisterInfo.h
index 2106c6e..b4a0415 100644
--- a/lib/Target/PowerPC/PPCRegisterInfo.h
+++ b/lib/Target/PowerPC/PPCRegisterInfo.h
@@ -96,10 +96,6 @@
                                      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;
