forked from OSchip/llvm-project
[MachineOutliner][X86] Use TAILJMPd64 instead of JMP_1 for TailCall construction
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. Differential Revision: https://reviews.llvm.org/D49299 llvm-svn: 338237
This commit is contained in:
parent
927b3da6c9
commit
7d003657de
|
@ -7725,7 +7725,7 @@ X86InstrInfo::insertOutlinedCall(Module &M, MachineBasicBlock &MBB,
|
|||
if (C.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.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue