summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDiana Picus <diana.picus@linaro.org>2017-11-30 12:23:44 +0000
committerDiana Picus <diana.picus@linaro.org>2017-11-30 12:23:44 +0000
commitf003d9ff95eecb2cd84b8c46f1ad9485a597c161 (patch)
tree2487f57701115365d1755e60a2d526362772d33c /llvm/lib
parent93ef145862e140ed880fd2eca404dc2641a12093 (diff)
downloadbcm5719-llvm-f003d9ff95eecb2cd84b8c46f1ad9485a597c161.tar.gz
bcm5719-llvm-f003d9ff95eecb2cd84b8c46f1ad9485a597c161.zip
[ARM GlobalISel] Bail out for byval
Fallback if we have a byval parameter or argument since we don't support them yet. llvm-svn: 319428
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/ARMCallLowering.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMCallLowering.cpp b/llvm/lib/Target/ARM/ARMCallLowering.cpp
index 1c2df39d05a..7338ac8bcb5 100644
--- a/llvm/lib/Target/ARM/ARMCallLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMCallLowering.cpp
@@ -434,9 +434,12 @@ bool ARMCallLowering::lowerFormalArguments(MachineIRBuilder &MIRBuilder,
auto &MBB = MIRBuilder.getMBB();
auto DL = MF.getDataLayout();
- for (auto &Arg : F.args())
+ for (auto &Arg : F.args()) {
if (!isSupportedType(DL, TLI, Arg.getType()))
return false;
+ if (Arg.hasByValOrInAllocaAttr())
+ return false;
+ }
CCAssignFn *AssignFn =
TLI.CCAssignFnForCall(F.getCallingConv(), F.isVarArg());
@@ -529,6 +532,9 @@ bool ARMCallLowering::lowerCall(MachineIRBuilder &MIRBuilder,
if (!Arg.IsFixed)
return false;
+ if (Arg.Flags.isByVal())
+ return false;
+
SmallVector<unsigned, 8> Regs;
splitToValueTypes(Arg, ArgInfos, MF, [&](unsigned Reg, uint64_t Offset) {
Regs.push_back(Reg);
OpenPOWER on IntegriCloud