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

    <tr>
        <th>Summary</th>
        <td>
            LLVM data layout for `i128` doesn't match Clang's alignment of `__int128_t` on 64-bit PowerPC, 64-bit SPARC and 64-bit MIPS
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    On 64-bit PowerPC, 64-bit SPARC and 64-bit MIPS, Clang gives `__int128_t` an alignment of 16 whereas the LLVM data layout (implicitly) gives `i128` an alignment of 8. This means that LLVM-based compilers that use the LLVM data layout alignment directly (such as `rustc`) are ABI incompatible with Clang itself. This is the same as a previous bug on x86-64 that was fixed in [https://reviews.llvm.org/D86310](D86310), just on different targets.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUkkFr4zAQhX-NfBkSpLFjOwcf2pRAoWXDdtlrka2JrSJbQRonzb9flKbbLe1lTzYS-ubNe0_HaPuJqBGrW7G6y_TMgw9NS8SBKGatN-fmxwRlsWgtw86fKOw2AjfvJ0-7m58b0JN5P3i83z2l-43TUw-9PVIEUcrnZzuxwvqZRSlBT6Cd7aeRJga_B1XCaaBAOgIPBA8Pvx_BaNbg9NnPDAJrOx6c7Sy7s8D1B9cqrL8j1kv4NdgII-kpQTVfqItWRzLQ-fFgHYXrzRzp-7kfSGMDdezOSUqcuwH0ZXyYI3eilEmTDgQ3t_dgp4TXbFtHcLI8XL2wHMntr7rs26ZRj5RQGg6BjtbPEdq5Bz_Ba10uyuJN30lH2NtXMmAnEKvbgfkQRX4jcCtwmx7SKS6dO45LH3qB27u6zJUUqzuB9fUf1ymVlzlyohu731NIi7EOPXFcZqbJzTpf64waVWGeF7IuMRsaKaXUleryEld1pSQZhVRpZapyvVL5KrMNSixkrZRURVXgco01VkYWhiTKvNuLQtKorfurMLMxztQoiVWdZ0635OKlgYhdskogpjKGJj1YtHMfRSGdjfyxZMaWHTVfEtv78G8tjKc4CawYRs3dNQmBVfzcli8F9f9b-WwOrvmcS295mNtl50eB26T7-lkcgn-hjgVuLz5EgdurFccG_wQAAP__3zQilA">