diff --git a/lib/Target/X86/X86CodeEmitter.cpp b/lib/Target/X86/X86CodeEmitter.cpp index 719d621f976..899e30f6f49 100644 --- a/lib/Target/X86/X86CodeEmitter.cpp +++ b/lib/Target/X86/X86CodeEmitter.cpp @@ -656,9 +656,10 @@ void Emitter::emitInstruction(const MachineInstr &MI) { if (MO.isMachineBasicBlock()) { emitPCRelativeBlockAddress(MO.getMachineBasicBlock()); } else if (MO.isGlobalAddress()) { - bool isTailCall = Opcode == X86::TAILJMPd || - Opcode == X86::TAILJMPr || Opcode == X86::TAILJMPm; - emitGlobalAddressForCall(MO.getGlobal(), !isTailCall && !Is64BitMode); + bool NeedStub = Is64BitMode || + Opcode == X86::TAILJMPd || + Opcode == X86::TAILJMPr || Opcode == X86::TAILJMPm; + emitGlobalAddressForCall(MO.getGlobal(), !NeedStub); } else if (MO.isExternalSymbol()) { emitExternalSymbolAddress(MO.getSymbolName(), X86::reloc_pcrel_word); } else if (MO.isImmediate()) {