<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/185716>185716</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [diverges-from:gcc][ABI][x86-64] ABI mismatch from GCC when using vector type members with an empty base class
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ImpleLee
      </td>
    </tr>
</table>

<pre>
    Godbolt link: https://godbolt.org/z/84EProx4c. Compile options: `-Og -march=x86-64-v3`.

```c++
#include <cstdint>
template <class T, int N>
using vec [[gnu::vector_size(N * sizeof(T))]] = T;
using data_t = vec<std::uint64_t, 4>;

struct Base { };
struct A : Base {
    [[no_unique_address]]
    data_t data;
};

A f() {
    return A{};
}

std::uint64_t f2(A x) {
    return x.data[0];
}
```

When using an empty base class, clang passes and returns `A` on stack, but gcc passes and returns `A` in register. Removing the base class makes clang passes and returns `A` in register.

Prossibly related: #183723.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEVFGPmzgQ_jWTl1GQsQmQBx4gaaqVTr3qtNI9RsbMgm_B5myT3e2vPxmy7aqqrtJIBs_4m2_G81l6r3tDVMGhgcN5J5cwWFc9TPNIfxDtWtu9VZ9t19ox4KjNM4gahxBmD6IGfgF-6TdvYl0P_PIN-KXMPn119jVTCZ7sNOuR0M5BWxMPIeRs_2eP-0k6NYA4v5b5Ps_2NwE5S4DV0XK2mQLeRGM1cKGNGpeOEMRJ-dBpE0B8AlYHmuZRhs0xSu_xEfgJtQn4ZYtYvDY93kjhWmbTmyXSF_WNVLDu6vU3Al5-QeA1xh_7BLx8BH6MdjjD4YwgzvgIovkO18kgr2Hdv5ECcfKh21AXbUKeXUNkkUUG6ylgtQ9uUQEb6QmhaBCK8-a7O2qMDXp3A6sR8U7Z2Oti9L8LXWXXOfJ-o3WPuXOJyz3ZOzKwusZYDfDjB1BHYXEG67jzPbQ4v9P8qRB84sDLGl9_CfKarHkPDYuEPkK9X-MG-_dABrfeSYM0zeEN21jremmxWWqUpsdZek8epenuGXycmYiG1qAPUj3H4HYJ2Cv1f-HaoKNe-0Auwb9osreYPAz0IS9O8pn871N_xNrq-eqs97od39BRnL9unW4u0lIUXCS7rhLdURzljqq0KESa50fOdkPVHUpWirQteZ5maSq6kuckZXF8Ykd5YHKnK854zkTK0pJzxpKCZWkmMirKLJdZlkLGaJJ6TMbxNkXh7bT3C1VpeSjSfDfKlka_SppzQy-4eoHzqHBXxUP7duk9ZGzUPvgfMEGHcX0LOn0j15PfPzk7gah7pdaBa-rmYfvYZBuVUTcPOGk_yaAGjPH4-XTClx-3vakMw9tMONHUkvP4osPwqzHYLW6sfnpgdBiWNlF2An6JVO_Lfnb2H1IB-GUt0AO_3Dtwq_h_AQAA__8UfnWD">