[PATCH] D60349: [COFF, ARM64] Fix ABI implementation of struct returns

Eli Friedman via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 30 14:40:11 PDT 2019


efriedma added inline comments.


================
Comment at: lib/CodeGen/MicrosoftCXXABI.cpp:1106
+
+    FI.getReturnInfo().setInReg(isAArch64 && !IsSizeGreaterThan128(RD));
 
----------------
richard.townsend.arm wrote:
> I'm not sure what the IsSizeGreaterThan128 check is doing here - if the return type is over 128 bits, then it will be indirectly returned in X8 with this check, which is not always what we want (e.g. in https://bugs.llvm.org/show_bug.cgi?id=41135 ostream.cpp, MSVC expects the value returned in X1). Another check of hasMicrosoftABIRestrictions might be OK, but that's also not quite right due to the size check. 
I think the check here is intended to counteract the similar check in hasMicrosoftABIRestrictions... but yes, I don't think that works correctly.  Looks like we're missing a testcase for a non-aggregate type with size greater than 128 bits.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60349/new/

https://reviews.llvm.org/D60349





More information about the cfe-commits mailing list