Index: clang/lib/Headers/adxintrin.h =================================================================== --- clang/lib/Headers/adxintrin.h +++ clang/lib/Headers/adxintrin.h @@ -17,8 +17,19 @@ /* Define the default attributes for the functions in this file. */ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) +/* Use C++ inline semantics in C++, GNU inline for C mode. */ +#if defined(__cplusplus) +#define __INLINE __inline +#else +#define __INLINE static __inline +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + /* Intrinsics that are available only if __ADX__ defined */ -static __inline unsigned char __attribute__((__always_inline__, __nodebug__, __target__("adx"))) +__INLINE unsigned char __attribute__((__always_inline__, __nodebug__, __target__("adx"))) _addcarryx_u32(unsigned char __cf, unsigned int __x, unsigned int __y, unsigned int *__p) { @@ -26,7 +37,7 @@ } #ifdef __x86_64__ -static __inline unsigned char __attribute__((__always_inline__, __nodebug__, __target__("adx"))) +__INLINE unsigned char __attribute__((__always_inline__, __nodebug__, __target__("adx"))) _addcarryx_u64(unsigned char __cf, unsigned long long __x, unsigned long long __y, unsigned long long *__p) { @@ -35,7 +46,7 @@ #endif /* Intrinsics that are also available if __ADX__ undefined */ -static __inline unsigned char __DEFAULT_FN_ATTRS +__INLINE unsigned char __DEFAULT_FN_ATTRS _addcarry_u32(unsigned char __cf, unsigned int __x, unsigned int __y, unsigned int *__p) { @@ -43,7 +54,7 @@ } #ifdef __x86_64__ -static __inline unsigned char __DEFAULT_FN_ATTRS +__INLINE unsigned char __DEFAULT_FN_ATTRS _addcarry_u64(unsigned char __cf, unsigned long long __x, unsigned long long __y, unsigned long long *__p) { @@ -51,7 +62,7 @@ } #endif -static __inline unsigned char __DEFAULT_FN_ATTRS +__INLINE unsigned char __DEFAULT_FN_ATTRS _subborrow_u32(unsigned char __cf, unsigned int __x, unsigned int __y, unsigned int *__p) { @@ -59,7 +70,7 @@ } #ifdef __x86_64__ -static __inline unsigned char __DEFAULT_FN_ATTRS +__INLINE unsigned char __DEFAULT_FN_ATTRS _subborrow_u64(unsigned char __cf, unsigned long long __x, unsigned long long __y, unsigned long long *__p) { @@ -67,6 +78,11 @@ } #endif +#if defined(__cplusplus) +} +#endif + #undef __DEFAULT_FN_ATTRS +#undef __INLINE #endif /* __ADXINTRIN_H */