diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-09-01 22:07:06 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-09-01 22:07:06 +0000 |
| commit | 064aca1f4cb7a3ac916d665db62056008ecde927 (patch) | |
| tree | d517d1ee416669465faa270533d2abb80d09acd2 /lib/Target/X86/X86CodeEmitter.cpp | |
| parent | 914bc71e34cfa976d86bcd7c95fafd794dcc2020 (diff) | |
| download | external_llvm-064aca1f4cb7a3ac916d665db62056008ecde927.zip external_llvm-064aca1f4cb7a3ac916d665db62056008ecde927.tar.gz external_llvm-064aca1f4cb7a3ac916d665db62056008ecde927.tar.bz2 | |
Simplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80729 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86CodeEmitter.cpp')
| -rw-r--r-- | lib/Target/X86/X86CodeEmitter.cpp | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/lib/Target/X86/X86CodeEmitter.cpp b/lib/Target/X86/X86CodeEmitter.cpp index 9c12edf..6132027 100644 --- a/lib/Target/X86/X86CodeEmitter.cpp +++ b/lib/Target/X86/X86CodeEmitter.cpp @@ -324,37 +324,27 @@ void Emitter<CodeEmitter>::emitDisplacementField(const MachineOperand *RelocOp, // Otherwise, this is something that requires a relocation. Emit it as such // now. + unsigned RelocType = Is64BitMode ? + (IsPCRel ? X86::reloc_pcrel_word : X86::reloc_absolute_word_sext) + : (IsPIC ? X86::reloc_picrel_word : X86::reloc_absolute_word); if (RelocOp->isGlobal()) { // In 64-bit static small code model, we could potentially emit absolute. // But it's probably not beneficial. If the MCE supports using RIP directly // do it, otherwise fallback to absolute (this is determined by IsPCRel). // 89 05 00 00 00 00 mov %eax,0(%rip) # PC-relative // 89 04 25 00 00 00 00 mov %eax,0x0 # Absolute - unsigned rt = Is64BitMode ? - (IsPCRel ? X86::reloc_pcrel_word : X86::reloc_absolute_word_sext) - : (IsPIC ? X86::reloc_picrel_word : X86::reloc_absolute_word); bool NeedStub = isa<Function>(RelocOp->getGlobal()); bool Indirect = gvNeedsNonLazyPtr(*RelocOp, TM); - emitGlobalAddress(RelocOp->getGlobal(), rt, RelocOp->getOffset(), + emitGlobalAddress(RelocOp->getGlobal(), RelocType, RelocOp->getOffset(), Adj, NeedStub, Indirect); } else if (RelocOp->isSymbol()) { - unsigned rt = Is64BitMode ? - (IsPCRel ? X86::reloc_pcrel_word : X86::reloc_absolute_word_sext) - : (IsPIC ? X86::reloc_picrel_word : X86::reloc_absolute_word); - emitExternalSymbolAddress(RelocOp->getSymbolName(), rt); + emitExternalSymbolAddress(RelocOp->getSymbolName(), RelocType); } else if (RelocOp->isCPI()) { - unsigned rt = Is64BitMode ? - (IsPCRel ? X86::reloc_pcrel_word : X86::reloc_absolute_word_sext) - : (IsPIC ? X86::reloc_picrel_word : X86::reloc_absolute_word); - emitConstPoolAddress(RelocOp->getIndex(), rt, + emitConstPoolAddress(RelocOp->getIndex(), RelocType, RelocOp->getOffset(), Adj); - } else if (RelocOp->isJTI()) { - unsigned rt = Is64BitMode ? - (IsPCRel ? X86::reloc_pcrel_word : X86::reloc_absolute_word_sext) - : (IsPIC ? X86::reloc_picrel_word : X86::reloc_absolute_word); - emitJumpTableAddress(RelocOp->getIndex(), rt, Adj); } else { - llvm_unreachable("Unknown value to relocate!"); + assert(RelocOp->isJTI() && "Unexpected machine operand!"); + emitJumpTableAddress(RelocOp->getIndex(), RelocType, Adj); } } |
