xref: /netbsd-src/external/apache2/llvm/dist/clang/lib/Headers/vadefs.h (revision 7330f729ccf0bd976a06f95fad452fe774fc7fd1)
1*7330f729Sjoerg /* ===-------- vadefs.h ---------------------------------------------------===
2*7330f729Sjoerg  *
3*7330f729Sjoerg  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*7330f729Sjoerg  * See https://llvm.org/LICENSE.txt for license information.
5*7330f729Sjoerg  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*7330f729Sjoerg  *
7*7330f729Sjoerg  *===-----------------------------------------------------------------------===
8*7330f729Sjoerg  */
9*7330f729Sjoerg 
10*7330f729Sjoerg /* Only include this if we are aiming for MSVC compatibility. */
11*7330f729Sjoerg #ifndef _MSC_VER
12*7330f729Sjoerg #include_next <vadefs.h>
13*7330f729Sjoerg #else
14*7330f729Sjoerg 
15*7330f729Sjoerg #ifndef __clang_vadefs_h
16*7330f729Sjoerg #define __clang_vadefs_h
17*7330f729Sjoerg 
18*7330f729Sjoerg #include_next <vadefs.h>
19*7330f729Sjoerg 
20*7330f729Sjoerg /* Override macros from vadefs.h with definitions that work with Clang. */
21*7330f729Sjoerg #ifdef _crt_va_start
22*7330f729Sjoerg #undef _crt_va_start
23*7330f729Sjoerg #define _crt_va_start(ap, param) __builtin_va_start(ap, param)
24*7330f729Sjoerg #endif
25*7330f729Sjoerg #ifdef _crt_va_end
26*7330f729Sjoerg #undef _crt_va_end
27*7330f729Sjoerg #define _crt_va_end(ap)          __builtin_va_end(ap)
28*7330f729Sjoerg #endif
29*7330f729Sjoerg #ifdef _crt_va_arg
30*7330f729Sjoerg #undef _crt_va_arg
31*7330f729Sjoerg #define _crt_va_arg(ap, type)    __builtin_va_arg(ap, type)
32*7330f729Sjoerg #endif
33*7330f729Sjoerg 
34*7330f729Sjoerg /* VS 2015 switched to double underscore names, which is an improvement, but now
35*7330f729Sjoerg  * we have to intercept those names too.
36*7330f729Sjoerg  */
37*7330f729Sjoerg #ifdef __crt_va_start
38*7330f729Sjoerg #undef __crt_va_start
39*7330f729Sjoerg #define __crt_va_start(ap, param) __builtin_va_start(ap, param)
40*7330f729Sjoerg #endif
41*7330f729Sjoerg #ifdef __crt_va_end
42*7330f729Sjoerg #undef __crt_va_end
43*7330f729Sjoerg #define __crt_va_end(ap)          __builtin_va_end(ap)
44*7330f729Sjoerg #endif
45*7330f729Sjoerg #ifdef __crt_va_arg
46*7330f729Sjoerg #undef __crt_va_arg
47*7330f729Sjoerg #define __crt_va_arg(ap, type)    __builtin_va_arg(ap, type)
48*7330f729Sjoerg #endif
49*7330f729Sjoerg 
50*7330f729Sjoerg #endif
51*7330f729Sjoerg #endif
52