[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