[clang] [llvm] [X86][APX] Combine MOVABS+JMP to JMPABS when in no-PIC large code model (PR #186402)

Feng Zou via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 16 00:13:20 PDT 2026


================
@@ -485,10 +485,18 @@ void X86MCInstLower::Lower(const MachineInstr *MI, MCInst &OutMI) const {
   case X86::TAILJMPr64:
   case X86::TAILJMPr64_REX:
   case X86::TAILJMPd:
-  case X86::TAILJMPd64:
     assert(OutMI.getNumOperands() == 1 && "Unexpected number of operands!");
     OutMI.setOpcode(convertTailJumpOpcode(OutMI.getOpcode()));
     break;
+  case X86::TAILJMPd64: {
+    assert(OutMI.getNumOperands() == 1 && "Unexpected number of operands!");
+    bool IsLarge = TM.getCodeModel() == CodeModel::Large;
+    assert((!IsLarge || AsmPrinter.getSubtarget().hasJMPABS()) &&
+           "Unexpected TAILJMPd64 in large code model without JMPABS");
+    OutMI.setOpcode(convertTailJumpOpcode(
+        OutMI.getOpcode(), TM.getCodeModel() == CodeModel::Large));
----------------
fzou1 wrote:

```suggestion
        OutMI.getOpcode(), IsLarge));
```

https://github.com/llvm/llvm-project/pull/186402


More information about the llvm-commits mailing list