Skip to content

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 #102783

Closed
@beetrees

Description

@beetrees

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 D86310, just on different targets. As Clang's behaviour matches GCC (and the PowerPC64 ABI specification) the LLVM data layout is what needs to be updated.

Affected architectures:

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions