llvm-project
8ecec455 - [clang] Fix x86_64-windows-msvc over- and under-alignment (#196505)

Commit
9 days ago
[clang] Fix x86_64-windows-msvc over- and under-alignment (#196505) This fixes two issues where Clang was both over- and under-aligning variables: 1) We were applying the x86_64 Sys V psABI "large array" alignment increase (default when inheriting from X86_64TargetInfo), but MSVC doesn't follow that ABI. 2) MSVC implements a similar scheme though, where it increases the alignment of large objects. This is documented for ARM64 [1] and was implemented in Clang b7c6d95af5e295c560d1445e7090e31eb9289932, but it also applies to x86_64. ([2] says "MSVC does size (total size, not element size) based alignment for global symbols on ARM64 *which is copied from AMD64*"). This patch stops doing 1) and implements 2) for x86_64-windows-msvc. [1] https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#alignment [2] https://github.com/llvm/llvm-project/issues/40851 Fixes https://github.com/llvm/llvm-project/issues/196071 Fixes https://github.com/llvm/llvm-project/issues/171855
Author
Parents
Loading