From 2bf8c9d381d479a0164a1991b607547bcd4d2458 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Mon, 30 Jan 2017 21:45:21 +0000 Subject: GlobalISel: correctly translate invoke when callee is a register. This should fix the GlobalISel verifier. llvm-svn: 293550 --- llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'llvm/lib/CodeGen') diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index 21657827a93..0f66bd9d171 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -737,7 +737,11 @@ bool IRTranslator::translateInvoke(const User &U, for (auto &Arg: I.arg_operands()) Args.emplace_back(getOrCreateVReg(*Arg), Arg->getType()); - if (!CLI->lowerCall(MIRBuilder, MachineOperand::CreateGA(Fn, 0), + auto CalleeMO = + Fn ? MachineOperand::CreateGA(Fn, 0) + : MachineOperand::CreateReg(getOrCreateVReg(*Callee), false); + + if (!CLI->lowerCall(MIRBuilder, CalleeMO, CallLowering::ArgInfo(Res, I.getType()), Args)) return false; -- cgit v1.2.3