mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-28 19:36:06 +00:00

The x86_64 SysV ABI specifies that __int128 is passed either in two registers (if available) or in a 16 byte aligned stack slot. GCC implements this behavior. However, if only one free register is available, LLVM will instead pass one half of the i128 in a register, and the other on the stack. Make sure that either both are passed in registers or both on the stack. Fixes https://github.com/llvm/llvm-project/issues/41784. The patch is basically what craig.topper proposed to do there. Differential Revision: https://reviews.llvm.org/D158169
See llvm/docs/README.txt