diff options
author | Tim Northover <tnorthover@apple.com> | 2017-01-30 21:45:21 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2017-01-30 21:45:21 +0000 |
commit | 2bf8c9d381d479a0164a1991b607547bcd4d2458 (patch) | |
tree | e356c01c7f018f1877c002229c2db91ca4fa9cdd /llvm/lib | |
parent | a3b72798af09724ab6b5e08a56031b8a06692f0b (diff) | |
download | bcm5719-llvm-2bf8c9d381d479a0164a1991b607547bcd4d2458.tar.gz bcm5719-llvm-2bf8c9d381d479a0164a1991b607547bcd4d2458.zip |
GlobalISel: correctly translate invoke when callee is a register.
This should fix the GlobalISel verifier.
llvm-svn: 293550
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
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; |