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

Hubert Tong via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 7 07:24:36 PDT 2020


As information, it seems no_unique_address handling already works for
PPC64LE:
struct A {
  int : 0;
};

struct B {
  float f;
  struct A a [[no_unique_address]];
};

void f(B);

void g(B *bp) {
  f(*bp);
}

Uses:
lfsx 1, 0, 3

Compiler Explorer link: https://godbolt.org/z/tHkSRQ

On Tue, Jul 7, 2020 at 8:25 AM Ulrich Weigand via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> 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
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200707/19d8696c/attachment.html>


More information about the llvm-dev mailing list