This changes the ABI used on 32-bit x86 for passing vector arguments.
Currently, clang passes 4 arguments in-register, and everything else on the stack, on all platforms.
This is different from the behavior of gcc, icc, and msvc, all of which pass 3 arguments in-register. The 3-register convention is documented, unofficially, in Agner's calling convention guide, and, officially, in the recently released version 1.0 of the i386 psABI (see https://01.org/sites/default/files/file_attach/intel386-psabi-1.0.pdf ).
This patch changes the behavior on all platforms except Darwin. The Darwin ABI is kept as is, because:
a) Clang is the mainstream compiler for the platform, which means that existing code is much more likely to rely on the current ABI.
b) The current behavior is documented (in the OS X ABI Function Call Guide).
See also PR21510.
Please feel free to add more reviewers that have a stake in this.