[llvm-commits] [llvm] r80729 - /llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp

Daniel Dunbar daniel at zuster.org
Tue Sep 1 15:07:06 PDT 2009


Author: ddunbar
Date: Tue Sep  1 17:07:06 2009
New Revision: 80729

URL: http://llvm.org/viewvc/llvm-project?rev=80729&view=rev
Log:
Simplify.

Modified:
    llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp

Modified: llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp?rev=80729&r1=80728&r2=80729&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86CodeEmitter.cpp Tue Sep  1 17:07:06 2009
@@ -324,37 +324,27 @@
 
   // 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);
   }
 }
 





More information about the llvm-commits mailing list