<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>I realized that va_list is not really part of the ABI and the compiler can implement it any way it wants, but it looks like in the x86_64-pc-win32-macho triple there is a mixture of the Unix 24 byte array of structure scheme and the Visual Studio 8 byte pointer to the frame scheme. </div><div><br></div><div>I've seen a failure using a va_list that looks a lot like the schemes were being mixed, but the code was so complicated it is hard to say for sure. I tried to generate a simple test case and it looked like the code gen for the va_list was following Visual Studio scheme of being a pointer to the frame, but the sizeof (__builtin_va_list) is still 24 bytes. Given this I think it is safe to assume that the x86_64-pc-win32-macho triple has a bug that is mixing va_list schemes. For our EFI usage case we don't care which scheme is used, we just need the compiler to be self consistent. Xcode also shows the va_list as an array of a structure that is 24 bytes. </div><div><br></div><div>Test case:</div><div></div></body></html>