Building this example with Clang will raise a build error:
$ clang -msse x86-simd.c -o x86-simd.exe
x86-simd.c:10:15: error: cannot convert between vector values of different size ('__m128' (vector of 4 'float' values) and 'int')
vec_a = vec_a + 5;
~~~~~ ^ ~
1 error generated.
Would anyone object to taking a vector x scalar operation to mean that the scalar should be replicated to the same width as the vector, same way GCC does? AFAICS, this is already the case with OpenCl's ext_vector_type.
This probably could be fixed in Sema::CheckVectorOperands() along with the changes in the test examples (test/Sema/zvector.c and possibly other). How should "-fno-lax-vector-conversions" interfere in those case?