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