[PATCH] D134688: MSVC AArch64 ABI: Homogeneous aggregates

David Blaikie via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 27 17:58:31 PDT 2022


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



More information about the cfe-commits mailing list