Add IMPLICIT_DEF of LR for branch-and-link instrs (calls and global accesses)
authorMisha Brukman <brukman+llvm@gmail.com>
Tue, 27 Jul 2004 17:13:58 +0000 (17:13 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Tue, 27 Jul 2004 17:13:58 +0000 (17:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15270 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPC32ISelSimple.cpp
lib/Target/PowerPC/PowerPCISelSimple.cpp

index ae7cf3ed40c6b803e4aaeed725fa8042d7fea1e9..27852619a14fd3bc75edda03c8084d74def321ad 100644 (file)
@@ -522,6 +522,7 @@ void ISel::copyGlobalBaseToRegister(MachineBasicBlock *MBB,
     MachineBasicBlock &FirstMBB = F->front();
     MachineBasicBlock::iterator MBBI = FirstMBB.begin();
     GlobalBaseReg = makeAnotherReg(Type::IntTy);
+    BuildMI(FirstMBB, MBBI, PPC32::IMPLICIT_DEF, 0, PPC32::LR);
     BuildMI(FirstMBB, MBBI, PPC32::MovePCtoLR, 0, GlobalBaseReg);
     GlobalBaseInitialized = true;
   }
@@ -1576,6 +1577,7 @@ void ISel::doCall(const ValueRecord &Ret, MachineInstr *CallMI,
     BuildMI(BB, PPC32::ADJCALLSTACKDOWN, 1).addSImm(0);
   }
 
+  BuildMI(BB, PPC32::IMPLICIT_DEF, 0, PPC32::LR);
   BB->push_back(CallMI);
   BuildMI(BB, PPC32::ADJCALLSTACKUP, 1).addSImm(NumBytes);
 
index ae7cf3ed40c6b803e4aaeed725fa8042d7fea1e9..27852619a14fd3bc75edda03c8084d74def321ad 100644 (file)
@@ -522,6 +522,7 @@ void ISel::copyGlobalBaseToRegister(MachineBasicBlock *MBB,
     MachineBasicBlock &FirstMBB = F->front();
     MachineBasicBlock::iterator MBBI = FirstMBB.begin();
     GlobalBaseReg = makeAnotherReg(Type::IntTy);
+    BuildMI(FirstMBB, MBBI, PPC32::IMPLICIT_DEF, 0, PPC32::LR);
     BuildMI(FirstMBB, MBBI, PPC32::MovePCtoLR, 0, GlobalBaseReg);
     GlobalBaseInitialized = true;
   }
@@ -1576,6 +1577,7 @@ void ISel::doCall(const ValueRecord &Ret, MachineInstr *CallMI,
     BuildMI(BB, PPC32::ADJCALLSTACKDOWN, 1).addSImm(0);
   }
 
+  BuildMI(BB, PPC32::IMPLICIT_DEF, 0, PPC32::LR);
   BB->push_back(CallMI);
   BuildMI(BB, PPC32::ADJCALLSTACKUP, 1).addSImm(NumBytes);