[libcxx-commits] [libcxx] aa7f377 - [libc++] Remove libc++'s own stdint.h and locale.h (#107436)
via libcxx-commits
libcxx-commits at lists.llvm.org
Sun Oct 20 07:01:25 PDT 2024
Author: Louis Dionne
Date: 2024-10-20T16:01:21+02:00
New Revision: aa7f377c965ca79cf3022ddafe6cbd419bd52db5
URL: https://github.com/llvm/llvm-project/commit/aa7f377c965ca79cf3022ddafe6cbd419bd52db5
DIFF: https://github.com/llvm/llvm-project/commit/aa7f377c965ca79cf3022ddafe6cbd419bd52db5.diff
LOG: [libc++] Remove libc++'s own stdint.h and locale.h (#107436)
These headers are not doing anything beyond the system or compiler
provided equivalent headers, so there's no real reason to keep them
around. Reducing the number of C headers we provide in libc++ simplifies
our header layering and reduces the potential for confusion when headers
are layered incorrectly.
Added:
Modified:
libcxx/include/CMakeLists.txt
libcxx/include/clocale
libcxx/include/cstdint
libcxx/include/module.modulemap
libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
libcxx/utils/libcxx/header_information.py
Removed:
libcxx/include/locale.h
libcxx/include/stdint.h
################################################################################
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index 3431ea7dab386b..a107314518b1fa 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -967,7 +967,6 @@ set(files
limits
list
locale
- locale.h
map
math.h
mdspan
@@ -998,7 +997,6 @@ set(files
stdbool.h
stddef.h
stdexcept
- stdint.h
stdio.h
stdlib.h
stop_token
diff --git a/libcxx/include/clocale b/libcxx/include/clocale
index c689a64be288a3..4d53aa7eb29b29 100644
--- a/libcxx/include/clocale
+++ b/libcxx/include/clocale
@@ -38,14 +38,6 @@ lconv* localeconv();
#include <locale.h>
-#ifndef _LIBCPP_LOCALE_H
-# error <clocale> tried including <locale.h> but didn't find libc++'s <locale.h> header. \
- This usually means that your header search paths are not configured properly. \
- The header search paths should contain the C++ Standard Library headers before \
- any C Standard Library, and you are probably using compiler flags that make that \
- not be the case.
-#endif
-
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
diff --git a/libcxx/include/cstdint b/libcxx/include/cstdint
index 8c4782859426dd..9c9b2323d06ea9 100644
--- a/libcxx/include/cstdint
+++ b/libcxx/include/cstdint
@@ -144,14 +144,6 @@ Types:
#include <stdint.h>
-#ifndef _LIBCPP_STDINT_H
-# error <cstdint> tried including <stdint.h> but didn't find libc++'s <stdint.h> header. \
- This usually means that your header search paths are not configured properly. \
- The header search paths should contain the C++ Standard Library headers before \
- any C Standard Library, and you are probably using compiler flags that make that \
- not be the case.
-#endif
-
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
#endif
diff --git a/libcxx/include/locale.h b/libcxx/include/locale.h
deleted file mode 100644
index 425bf47d437ac8..00000000000000
--- a/libcxx/include/locale.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// -*- C++ -*-
-//===----------------------------------------------------------------------===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef _LIBCPP_LOCALE_H
-#define _LIBCPP_LOCALE_H
-
-/*
- locale.h synopsis
-
-Macros:
-
- LC_ALL
- LC_COLLATE
- LC_CTYPE
- LC_MONETARY
- LC_NUMERIC
- LC_TIME
-
-Types:
-
- lconv
-
-Functions:
-
- setlocale
- localeconv
-
-*/
-
-#include <__config>
-
-#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
-# pragma GCC system_header
-#endif
-
-#if __has_include_next(<locale.h>)
-# include_next <locale.h>
-#endif
-
-#endif // _LIBCPP_LOCALE_H
diff --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap
index 5a0e199394d018..06e93d2452904d 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -2184,10 +2184,6 @@ module std_inttypes_h [system] {
header "inttypes.h"
export *
}
-module std_locale_h [system] {
- header "locale.h"
- export *
-}
module std_math_h [system] {
header "math.h"
export *
@@ -2204,10 +2200,6 @@ module std_stddef_h [system] {
// <stddef.h>'s __need_* macros require textual inclusion.
textual header "stddef.h"
}
-module std_stdint_h [system] {
- header "stdint.h"
- export *
-}
module std_stdio_h [system] {
// <stdio.h>'s __need_* macros require textual inclusion.
textual header "stdio.h"
diff --git a/libcxx/include/stdint.h b/libcxx/include/stdint.h
deleted file mode 100644
index 35e5b8cbdad264..00000000000000
--- a/libcxx/include/stdint.h
+++ /dev/null
@@ -1,127 +0,0 @@
-// -*- C++ -*-
-//===----------------------------------------------------------------------===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef _LIBCPP_STDINT_H
-// AIX system headers need stdint.h to be re-enterable while _STD_TYPES_T
-// is defined until an inclusion of it without _STD_TYPES_T occurs, in which
-// case the header guard macro is defined.
-#if !defined(_AIX) || !defined(_STD_TYPES_T)
-# define _LIBCPP_STDINT_H
-#endif // _STD_TYPES_T
-
-/*
- stdint.h synopsis
-
-Macros:
-
- INT8_MIN
- INT16_MIN
- INT32_MIN
- INT64_MIN
-
- INT8_MAX
- INT16_MAX
- INT32_MAX
- INT64_MAX
-
- UINT8_MAX
- UINT16_MAX
- UINT32_MAX
- UINT64_MAX
-
- INT_LEAST8_MIN
- INT_LEAST16_MIN
- INT_LEAST32_MIN
- INT_LEAST64_MIN
-
- INT_LEAST8_MAX
- INT_LEAST16_MAX
- INT_LEAST32_MAX
- INT_LEAST64_MAX
-
- UINT_LEAST8_MAX
- UINT_LEAST16_MAX
- UINT_LEAST32_MAX
- UINT_LEAST64_MAX
-
- INT_FAST8_MIN
- INT_FAST16_MIN
- INT_FAST32_MIN
- INT_FAST64_MIN
-
- INT_FAST8_MAX
- INT_FAST16_MAX
- INT_FAST32_MAX
- INT_FAST64_MAX
-
- UINT_FAST8_MAX
- UINT_FAST16_MAX
- UINT_FAST32_MAX
- UINT_FAST64_MAX
-
- INTPTR_MIN
- INTPTR_MAX
- UINTPTR_MAX
-
- INTMAX_MIN
- INTMAX_MAX
-
- UINTMAX_MAX
-
- PTRDIFF_MIN
- PTRDIFF_MAX
-
- SIG_ATOMIC_MIN
- SIG_ATOMIC_MAX
-
- SIZE_MAX
-
- WCHAR_MIN
- WCHAR_MAX
-
- WINT_MIN
- WINT_MAX
-
- INT8_C(value)
- INT16_C(value)
- INT32_C(value)
- INT64_C(value)
-
- UINT8_C(value)
- UINT16_C(value)
- UINT32_C(value)
- UINT64_C(value)
-
- INTMAX_C(value)
- UINTMAX_C(value)
-
-*/
-
-#include <__config>
-
-#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
-# pragma GCC system_header
-#endif
-
-/* C99 stdlib (e.g. glibc < 2.18) does not provide macros needed
- for C++11 unless __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS
- are defined
-*/
-#if defined(__cplusplus) && !defined(__STDC_LIMIT_MACROS)
-# define __STDC_LIMIT_MACROS
-#endif
-#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS)
-# define __STDC_CONSTANT_MACROS
-#endif
-
-#if __has_include_next(<stdint.h>)
-# include_next <stdint.h>
-#endif
-
-#endif // _LIBCPP_STDINT_H
diff --git a/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp b/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
index 9fa4021e5c1ead..63ca6643797132 100644
--- a/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
+++ b/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
@@ -26,9 +26,6 @@ extern "C" {
#include <inttypes.h>
#include <iso646.h>
#include <limits.h>
-#ifndef _LIBCPP_HAS_NO_LOCALIZATION
-# include <locale.h>
-#endif
#include <math.h>
#include <setjmp.h>
#include <signal.h>
diff --git a/libcxx/utils/libcxx/header_information.py b/libcxx/utils/libcxx/header_information.py
index 6bebf3302ffae9..2ed52e8c1dbf22 100644
--- a/libcxx/utils/libcxx/header_information.py
+++ b/libcxx/utils/libcxx/header_information.py
@@ -15,7 +15,6 @@
# headers with #error directives
"ios": "!defined(_LIBCPP_HAS_NO_LOCALIZATION)",
- "locale.h": "!defined(_LIBCPP_HAS_NO_LOCALIZATION)",
# transitive includers of the above headers
"clocale": "!defined(_LIBCPP_HAS_NO_LOCALIZATION)",
"codecvt": "!defined(_LIBCPP_HAS_NO_LOCALIZATION)",
@@ -53,7 +52,6 @@
"istream": "// UNSUPPORTED: no-localization",
"latch": "// UNSUPPORTED: no-threads, c++03, c++11, c++14, c++17",
"locale": "// UNSUPPORTED: no-localization",
- "locale.h": "// UNSUPPORTED: no-localization",
"mutex": "// UNSUPPORTED: no-threads, c++03",
"ostream": "// UNSUPPORTED: no-localization",
"print": "// UNSUPPORTED: no-filesystem, c++03, c++11, c++14, c++17, c++20, availability-fp_to_chars-missing", # TODO PRINT investigate
More information about the libcxx-commits
mailing list