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



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to