diff options
| author | Tim Northover <tnorthover@apple.com> | 2014-12-03 17:49:26 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2014-12-03 17:49:26 +0000 |
| commit | 293d414380579a21fb58fa2894ec297e43f7f6f8 (patch) | |
| tree | 6b327b299af175eb0f8e61d1731742a37a460b44 /llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | |
| parent | 089791db484475ef9bad85f4be900b2e3145fdce (diff) | |
| download | bcm5719-llvm-293d414380579a21fb58fa2894ec297e43f7f6f8.tar.gz bcm5719-llvm-293d414380579a21fb58fa2894ec297e43f7f6f8.zip | |
AArch64: fix wrong-endian parameter passing.
The blocked arguments code didn't take account of the hacks needed to support
it.
llvm-svn: 223247
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64ISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp index 622b0e1d73d..ee31dbff28e 100644 --- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp +++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp @@ -2107,7 +2107,8 @@ SDValue AArch64TargetLowering::LowerFormalArguments( unsigned ArgSize = VA.getValVT().getSizeInBits() / 8; uint32_t BEAlign = 0; - if (ArgSize < 8 && !Subtarget->isLittleEndian()) + if (!Subtarget->isLittleEndian() && ArgSize < 8 && + !Ins[i].Flags.isInConsecutiveRegs()) BEAlign = 8 - ArgSize; int FI = MFI->CreateFixedObject(ArgSize, ArgOffset + BEAlign, true); @@ -2661,7 +2662,8 @@ AArch64TargetLowering::LowerCall(CallLoweringInfo &CLI, unsigned OpSize = Flags.isByVal() ? Flags.getByValSize() * 8 : VA.getValVT().getSizeInBits(); OpSize = (OpSize + 7) / 8; - if (!Subtarget->isLittleEndian() && !Flags.isByVal()) { + if (!Subtarget->isLittleEndian() && !Flags.isByVal() && + !Flags.isInConsecutiveRegs()) { if (OpSize < 8) BEAlign = 8 - OpSize; } |

