Clang and GCC disagree on the ABI of
__int128 (and its various
_t variants) on x64 linux (at least).
The issue is that when pushing
__int128 to the stack, clang only aligns to 8, even though in structs it's aligned to 16.
This causes Clang and GCC to disagree on the offset for by-value
__int128 arguments that need padding to be 16-aligned.
The following function signature demonstrates this in practice:
void i128_val_in_0_perturbed_small( uint8_t arg0,