diff options
Diffstat (limited to 'contrib/llvm-project/clang/lib/Headers/vadefs.h')
-rw-r--r-- | contrib/llvm-project/clang/lib/Headers/vadefs.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/contrib/llvm-project/clang/lib/Headers/vadefs.h b/contrib/llvm-project/clang/lib/Headers/vadefs.h new file mode 100644 index 000000000000..b6175684469c --- /dev/null +++ b/contrib/llvm-project/clang/lib/Headers/vadefs.h @@ -0,0 +1,51 @@ +/* ===-------- vadefs.h ---------------------------------------------------=== + * + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. + * See https://llvm.org/LICENSE.txt for license information. + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + * + *===-----------------------------------------------------------------------=== + */ + +/* Only include this if we are aiming for MSVC compatibility. */ +#ifndef _MSC_VER +#include_next <vadefs.h> +#else + +#ifndef __clang_vadefs_h +#define __clang_vadefs_h + +#include_next <vadefs.h> + +/* Override macros from vadefs.h with definitions that work with Clang. */ +#ifdef _crt_va_start +#undef _crt_va_start +#define _crt_va_start(ap, param) __builtin_va_start(ap, param) +#endif +#ifdef _crt_va_end +#undef _crt_va_end +#define _crt_va_end(ap) __builtin_va_end(ap) +#endif +#ifdef _crt_va_arg +#undef _crt_va_arg +#define _crt_va_arg(ap, type) __builtin_va_arg(ap, type) +#endif + +/* VS 2015 switched to double underscore names, which is an improvement, but now + * we have to intercept those names too. + */ +#ifdef __crt_va_start +#undef __crt_va_start +#define __crt_va_start(ap, param) __builtin_va_start(ap, param) +#endif +#ifdef __crt_va_end +#undef __crt_va_end +#define __crt_va_end(ap) __builtin_va_end(ap) +#endif +#ifdef __crt_va_arg +#undef __crt_va_arg +#define __crt_va_arg(ap, type) __builtin_va_arg(ap, type) +#endif + +#endif +#endif |