[PATCH] Fix fastcc/tailcallopt for ARM64
James Molloy
james.molloy at arm.com
Wed May 7 06:35:45 PDT 2014
================
Comment at: lib/Target/ARM64/ARM64ISelLowering.cpp:2236-2241
@@ -2092,3 +2235,8 @@
unsigned LocMemOffset = VA.getLocMemOffset();
- SDValue PtrOff = DAG.getIntPtrConstant(LocMemOffset);
- PtrOff = DAG.getNode(ISD::ADD, DL, getPointerTy(), StackPtr, PtrOff);
+ uint32_t OpSize = Flags.isByVal() ? Flags.getByValSize()*8 :
+ VA.getLocVT().getSizeInBits();
+ OpSize = (OpSize + 7) / 8;
+ uint32_t BEAlign = 0;
+ if (OpSize < 8 && !Subtarget->isLittleEndian())
+ BEAlign = 8-OpSize;
+ int32_t Offset = LocMemOffset + BEAlign;
----------------
Tim Northover wrote:
> I think this is probably dodgy for byval arguments. Perhaps leave the big-endian changes for James to thrash out?
Yes, this looks like code that was in AArch64 but has been refactored for ARM64. It should all fall out in the wash as this code is now fully committed to ARM64 ToT.
http://reviews.llvm.org/D3633
More information about the llvm-commits
mailing list