The MSVC compiler rejects __forceinline on variadic functions with the following warning (at /W4):
C4714: function 'void msvc_variadic(int,...)' marked as __forceinline not inlined
This fixes a bug in LLVM where a variadic was getting inlined into a function of calling convention x86_thiscallcc. The LLVM lowering passes cannot consume an @llvm.va_start intrinsic call in a thiscall function without emitting an assertion.
Inlining variadics should almost certainly be possible; however, this is a fix to bring Clang in line with MSVC.
Why is this warning dependent on the ABI? GCC has a similar warning:
https://godbolt.org/g/3E4NZ1