GlobalISel: correctly translate invoke when callee is a register.
This should fix the GlobalISel verifier.
llvm-svn: 293550
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index 2165782..0f66bd9 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -737,7 +737,11 @@
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;