1*71db0c75SAndroid Build Coastguard Worker //===-- Common definitions for LLVM-libc public header files --------------===// 2*71db0c75SAndroid Build Coastguard Worker // 3*71db0c75SAndroid Build Coastguard Worker // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*71db0c75SAndroid Build Coastguard Worker // See https://llvm.org/LICENSE.txt for license information. 5*71db0c75SAndroid Build Coastguard Worker // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*71db0c75SAndroid Build Coastguard Worker // 7*71db0c75SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 8*71db0c75SAndroid Build Coastguard Worker 9*71db0c75SAndroid Build Coastguard Worker #ifndef LLVM_LIBC_COMMON_H 10*71db0c75SAndroid Build Coastguard Worker #define LLVM_LIBC_COMMON_H 11*71db0c75SAndroid Build Coastguard Worker 12*71db0c75SAndroid Build Coastguard Worker #ifdef __cplusplus 13*71db0c75SAndroid Build Coastguard Worker 14*71db0c75SAndroid Build Coastguard Worker #undef __BEGIN_C_DECLS 15*71db0c75SAndroid Build Coastguard Worker #define __BEGIN_C_DECLS extern "C" { 16*71db0c75SAndroid Build Coastguard Worker 17*71db0c75SAndroid Build Coastguard Worker #undef __END_C_DECLS 18*71db0c75SAndroid Build Coastguard Worker #define __END_C_DECLS } 19*71db0c75SAndroid Build Coastguard Worker 20*71db0c75SAndroid Build Coastguard Worker // Standard C++ doesn't have C99 restrict but GNU C++ has it with __ spelling. 21*71db0c75SAndroid Build Coastguard Worker #undef __restrict 22*71db0c75SAndroid Build Coastguard Worker #ifndef __GNUC__ 23*71db0c75SAndroid Build Coastguard Worker #define __restrict 24*71db0c75SAndroid Build Coastguard Worker #endif 25*71db0c75SAndroid Build Coastguard Worker 26*71db0c75SAndroid Build Coastguard Worker #undef _Noreturn 27*71db0c75SAndroid Build Coastguard Worker #define _Noreturn [[noreturn]] 28*71db0c75SAndroid Build Coastguard Worker 29*71db0c75SAndroid Build Coastguard Worker #undef _Alignas 30*71db0c75SAndroid Build Coastguard Worker #define _Alignas alignas 31*71db0c75SAndroid Build Coastguard Worker 32*71db0c75SAndroid Build Coastguard Worker #undef _Static_assert 33*71db0c75SAndroid Build Coastguard Worker #define _Static_assert static_assert 34*71db0c75SAndroid Build Coastguard Worker 35*71db0c75SAndroid Build Coastguard Worker #undef _Alignof 36*71db0c75SAndroid Build Coastguard Worker #define _Alignof alignof 37*71db0c75SAndroid Build Coastguard Worker 38*71db0c75SAndroid Build Coastguard Worker #undef _Thread_local 39*71db0c75SAndroid Build Coastguard Worker #define _Thread_local thread_local 40*71db0c75SAndroid Build Coastguard Worker 41*71db0c75SAndroid Build Coastguard Worker #undef __NOEXCEPT 42*71db0c75SAndroid Build Coastguard Worker #define __NOEXCEPT noexcept 43*71db0c75SAndroid Build Coastguard Worker 44*71db0c75SAndroid Build Coastguard Worker #else // not __cplusplus 45*71db0c75SAndroid Build Coastguard Worker 46*71db0c75SAndroid Build Coastguard Worker #undef __BEGIN_C_DECLS 47*71db0c75SAndroid Build Coastguard Worker #define __BEGIN_C_DECLS 48*71db0c75SAndroid Build Coastguard Worker 49*71db0c75SAndroid Build Coastguard Worker #undef __END_C_DECLS 50*71db0c75SAndroid Build Coastguard Worker #define __END_C_DECLS 51*71db0c75SAndroid Build Coastguard Worker 52*71db0c75SAndroid Build Coastguard Worker #undef __restrict 53*71db0c75SAndroid Build Coastguard Worker #define __restrict restrict // C99 and above support the restrict keyword. 54*71db0c75SAndroid Build Coastguard Worker 55*71db0c75SAndroid Build Coastguard Worker #undef __NOEXCEPT 56*71db0c75SAndroid Build Coastguard Worker #define __NOEXCEPT 57*71db0c75SAndroid Build Coastguard Worker 58*71db0c75SAndroid Build Coastguard Worker #endif // __cplusplus 59*71db0c75SAndroid Build Coastguard Worker 60*71db0c75SAndroid Build Coastguard Worker #endif // LLVM_LIBC_COMMON_H 61