The Clang compiler treats the intrinsic vector types __m128, __m128i, and __m128d as identical,
where all other compilers treat them as different, in accordance with Intel manuals.
I have reported this problem in 2013 but it is still not fixed in july 2019.
A fix may be underway.
Work around in instrset.h: #define FIX_CLANG_VECTOR_ALIAS_AMBIGUITY
Bug tracing: https://bugs.llvm.org/show_bug.cgi?id=17164
The compiler sometimes puts mask registers in inline assembly where a general purpose register is required.
Work around in instrset.h: bit_scan_forward function given __ attribute __((noinline))
Bug tracing: https://bugs.llvm.org/show_bug.cgi?id=42883
Bug tracing: https://bugs.llvm.org/show_bug.cgi?id=42898
Fixed in version 8.
The cygwin64 version of clang causes crash on long double mathematical functions such as sqrtl, powl, etc.
Reported to Cygwin mailing list 2019-05-10
The cygwin64 version of clang has problems compiling the permute64 function
Reported to Cygwin mailing list 2019-08-05
This is not a bug, but suboptimal code.
There appears to be confusion over which memory model to use.
Reported to Cygwin mailing list 2019-08-06
LLVM bug tracing: https://bugs.llvm.org/show_bug.cgi?id=42983
A workaround is implemented in release 2.01.00
LLVM bug tracing: https://bugs.llvm.org/show_bug.cgi?id=44111
Fixed in version 10.