[llvm-dev] [RFC] C++20 ABI issue on several platforms

Ulrich Weigand via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 7 05:25:00 PDT 2020



Hello,

as discussed here in more detail: https://reviews.llvm.org/D81583

the introduction of the C++20 [[no_unique_address]] attribute exposes an
ABI issue on platforms that require special handling for structs/classes
that are "equivalent" to a single floating-point member (or in some cases,
a "homogeneous" set of floating-point members).  This is because we can now
for the first time have "empty" members in a C++ class, which affects that
determination.

The Itanium C++ ABI document was updated to include these new cases, and
GCC 10 was changed accordingly.  However, current clang/LLVM mainline does
not comply with this new ABI.   The Phabricator review I posted above fixes
that for the SystemZ target, but because I'm touching some amount of common
code, and because -to the best of my understanding- other platforms would
actually likewise be affected, I'm asking for comments here as well.

Given that we're nearing the time frame to create the LLVM 11 branch, it
would really be good if this issue could be fixed before the branch.


Bye,
Ulrich
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200707/c1a2f6b9/attachment.html>


More information about the llvm-dev mailing list