dblaikie marked 2 inline comments as done.
dblaikie added inline comments.

================
Comment at: clang/lib/CodeGen/MicrosoftCXXABI.cpp:4478-4480
   // MSVC Windows on Arm64 considers a type not HFA if it is not an
   // aggregate according to the C++14 spec. This is not consistent with the
   // AAPCS64, but is defacto spec on that platform.
----------------
rnk wrote:
> These comments seem stale. Are the checks below almost equivalent to C++14 
> isAggregate? In any case, they associate with the logic below, which is 
> arm-specific.
> 
> The arm check deserves some kind of comment to say that all aggregates are 
> permitted to be HFAs for non-ARM platforms, which mostly affects vectorcall 
> on x64/x86.
Not especially equivalent to C++14 aggregate, despite Microsoft's reports, I 
think.
For instance - the first requirement of a C++14 aggregate is that it has no 
user-provided ctors, but that's not a requirement for HFA: 
https://godbolt.org/z/Whazeha7v
& the no base classes requirement doesn't apply to HFA either - only no non-HFA 
base classes (& empty classes are considered non-HFA).

Updated the comment as best I could understand (I couldn't actually find the 
AAPCS64 rules to compare/contrast, so I'm hand waving a bit there - perhaps 
these ( 
https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#homogeneous-aggregates
 ) are all the rules, though they're pretty slim, and don't discuss special 
members at all, for instance, nor refer to any particular C++ standard for 
further clarification, so far as I can see)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D134688

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

Reply via email to