DavidSpickett wrote:

I tried your example on AArch64 and we don't get a return value there either. 
TestReturnValues.py in fact skips checking a type called `return_five_int` for 
the SysV AArch64 ABI (and now I see where you got the example from).

According to the AArch64 AAPCS (it's ABI):
> B.4   If the argument type is a Composite Type that is larger than 16 bytes, 
> then the argument is copied to memory allocated by the caller and the 
> argument is replaced by a pointer to the copy.

And then 
https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#69result-return
 which says:
> Otherwise, the caller shall reserve a block of memory of sufficient size and 
> alignment to hold the result. The address of the memory block shall be passed 
> as an additional argument to the function in x8. The callee may modify the 
> result memory block at any point during the execution of the subroutine 
> **(there is no requirement for the callee to preserve the value stored in 
> x8).**

(emphasis mine)

This matches the statement in the RISC-V ABI, so I would be fine with you 
adding RISC-V to the skip list there.

https://github.com/llvm/llvm-project/pull/163931
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to