diff options
author | Chris Lattner <sabre@nondot.org> | 2004-11-24 02:00:06 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-11-24 02:00:06 +0000 |
commit | b765ff121958d14d6dcfbd7475938cfc52975dd1 (patch) | |
tree | d06eccdbc6e2797aeae1a7c1fcbb9bb5b6ac5b42 | |
parent | b9f26da5dd6c404e0a6eabcb60fb3c61ac0ee173 (diff) | |
download | external_llvm-b765ff121958d14d6dcfbd7475938cfc52975dd1.zip external_llvm-b765ff121958d14d6dcfbd7475938cfc52975dd1.tar.gz external_llvm-b765ff121958d14d6dcfbd7475938cfc52975dd1.tar.bz2 |
Calls do not need a MovPCtoLR instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18197 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/PowerPC/PPCCodeEmitter.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/Target/PowerPC/PPCCodeEmitter.cpp b/lib/Target/PowerPC/PPCCodeEmitter.cpp index 14dbcff..68f9ccc 100644 --- a/lib/Target/PowerPC/PPCCodeEmitter.cpp +++ b/lib/Target/PowerPC/PPCCodeEmitter.cpp @@ -190,19 +190,22 @@ int PPC32CodeEmitter::getMachineOpValue(MachineInstr &MI, MachineOperand &MO) { rv = MO.getImmedValue(); } else if (MO.isGlobalAddress()) { unsigned Reloc = 0; + int Offset = 0; if (MI.getOpcode() == PPC::CALLpcrel) Reloc = PPC::reloc_pcrel_bx; else if (MI.getOpcode() == PPC::LOADHiAddr) { + assert(MovePCtoLROffset && "MovePCtoLR not seen yet?"); Reloc = PPC::reloc_absolute_loadhi; + Offset = -((intptr_t)MovePCtoLROffset+4); } else if (MI.getOpcode() == PPC::LA) { + assert(MovePCtoLROffset && "MovePCtoLR not seen yet?"); Reloc = PPC::reloc_absolute_la; + Offset = -((intptr_t)MovePCtoLROffset+4); } else { assert(0 && "Unknown instruction for relocation!"); } - assert(MovePCtoLROffset && "MovePCtoLR not seen yet?"); MCE.addRelocation(MachineRelocation(MCE.getCurrentPCOffset(), - Reloc, MO.getGlobal(), - -((intptr_t)MovePCtoLROffset+4))); + Reloc, MO.getGlobal(), Offset)); } else if (MO.isMachineBasicBlock()) { const BasicBlock *BB = MO.getMachineBasicBlock()->getBasicBlock(); unsigned* CurrPC = (unsigned*)(intptr_t)MCE.getCurrentPCValue(); |