[PATCH] D49299: [MachineOutliner][X86] Use TAILJMPd64 instead of JMP_1 for TailCall construction

Francis Visoiu Mistrih via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 13 08:31:46 PDT 2018


thegameg created this revision.
thegameg added reviewers: craig.topper, paquette, RKSimon.

The machine verifier asserts with:

  Assertion failed: (isMBB() && "Wrong MachineOperand accessor"), function getMBB, file ../include/llvm/CodeGen/MachineOperand.h, line 542.

It calls analyzeBranch which tries to call getMBB if the opcode is JMP_1, but in this case we do:

  JMP_1 @OUTLINED_FUNCTION

I believe we have to use TAILJMPd64 instead of JMP_1 since JMP_1 is used with brtarget8.


https://reviews.llvm.org/D49299

Files:
  lib/Target/X86/X86InstrInfo.cpp
  test/CodeGen/X86/machine-outliner-tailcalls.ll


Index: test/CodeGen/X86/machine-outliner-tailcalls.ll
===================================================================
--- test/CodeGen/X86/machine-outliner-tailcalls.ll
+++ test/CodeGen/X86/machine-outliner-tailcalls.ll
@@ -1,4 +1,4 @@
-; RUN: llc -enable-machine-outliner -mtriple=x86_64-apple-darwin < %s | FileCheck %s
+; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple=x86_64-apple-darwin < %s | FileCheck %s
 
 @x = common local_unnamed_addr global i32 0, align 4
 
Index: lib/Target/X86/X86InstrInfo.cpp
===================================================================
--- lib/Target/X86/X86InstrInfo.cpp
+++ lib/Target/X86/X86InstrInfo.cpp
@@ -7563,7 +7563,7 @@
   if (TCI.CallConstructionID == MachineOutlinerTailCall) {
     // Yes, just insert a JMP.
     It = MBB.insert(It,
-                  BuildMI(MF, DebugLoc(), get(X86::JMP_1))
+                  BuildMI(MF, DebugLoc(), get(X86::TAILJMPd64))
                       .addGlobalAddress(M.getNamedValue(MF.getName())));
   } else {
     // No, insert a call.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D49299.155399.patch
Type: text/x-patch
Size: 1048 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180713/1e045f37/attachment.bin>


More information about the llvm-commits mailing list