summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2017-01-30 21:45:21 +0000
committerTim Northover <tnorthover@apple.com>2017-01-30 21:45:21 +0000
commit2bf8c9d381d479a0164a1991b607547bcd4d2458 (patch)
treee356c01c7f018f1877c002229c2db91ca4fa9cdd /llvm/lib
parenta3b72798af09724ab6b5e08a56031b8a06692f0b (diff)
downloadbcm5719-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.cpp6
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;
OpenPOWER on IntegriCloud