blob: 8e3bad652df020d9245a74124526285b2a1f3fd3 [file] [log] [blame]
//===-- Definitions of common types from the C standard. ------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//
// This header file does not have a header guard. It is internal to LLVM libc
// and intended to be used to pick specific definitions without polluting the
// public headers with unnecessary definitions.
#undef __LLVM_LIBC_FLOAT_T
#undef __LLVM_LIBC_DOUBLE_T
#if !defined(__FLT_EVAL_METHOD__) || __FLT_EVAL_METHOD__ == 0
#define __LLVM_LIBC_FLOAT_T float
#define __LLVM_LIBC_DOUBLE_T double
#elif __FLT_EVAL_METHOD__ == 1
#define __LLVM_LIBC_FLOAT_T double
#define __LLVM_LIBC_DOUBLE_T double
#elif __FLT_EVAL_METHOD__ == 2
#define __LLVM_LIBC_FLOAT_T long double
#define __LLVM_LIBC_DOUBLE_T long double
#else
#error "Unsupported __FLT_EVAL_METHOD__ value."
#endif
#if defined(__need_float_t) && !defined(__llvm_libc_float_t_defined)
typedef __LLVM_LIBC_FLOAT_T float_t;
#define __llvm_libc_float_t_defined
#endif // __need_float_t
#if defined(__need_double_t) && !defined(__llvm_libc_double_t_defined)
typedef __LLVM_LIBC_DOUBLE_T double_t;
#define __llvm_libc_double_t_defined
#endif // __need_double_t