[libcxx-commits] [libcxx] [libc++] Remove libc++'s own stdint.h and locale.h (PR #107436)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Sep 5 10:22:35 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Louis Dionne (ldionne)
<details>
<summary>Changes</summary>
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.
---
Full diff: https://github.com/llvm/llvm-project/pull/107436.diff
8 Files Affected:
- (modified) libcxx/include/CMakeLists.txt (-2)
- (modified) libcxx/include/__std_clang_module (-4)
- (modified) libcxx/include/clocale (-8)
- (removed) libcxx/include/locale.h (-46)
- (modified) libcxx/include/module.modulemap (-8)
- (removed) libcxx/include/stdint.h (-127)
- (modified) libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp (-3)
- (modified) libcxx/utils/libcxx/header_information.py (-2)
``````````diff
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index 0f43916dae4384..762c68a9231e42 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -963,7 +963,6 @@ set(files
limits
list
locale
- locale.h
map
math.h
mdspan
@@ -994,7 +993,6 @@ set(files
stdbool.h
stddef.h
stdexcept
- stdint.h
stdio.h
stdlib.h
stop_token
diff --git a/libcxx/include/__std_clang_module b/libcxx/include/__std_clang_module
index 18d6ce6b46c1f6..c0e15ffb7f5962 100644
--- a/libcxx/include/__std_clang_module
+++ b/libcxx/include/__std_clang_module
@@ -126,9 +126,6 @@
#include <limits>
#include <list>
#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
-# include <locale.h>
-#endif
-#if !defined(_LIBCPP_HAS_NO_LOCALIZATION)
# include <locale>
#endif
#include <map>
@@ -172,7 +169,6 @@
#include <stdbool.h>
#include <stddef.h>
#include <stdexcept>
-#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#if !defined(_LIBCPP_HAS_NO_THREADS)
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/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 3abc11723a5a92..ded4647cb88a48 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -511,10 +511,6 @@ module std_inttypes_h [system] {
export *
}
// <iso646.h> provided by compiler.
-module std_locale_h [system] {
- header "locale.h"
- export *
-}
module std_math_h [system] {
header "math.h"
export *
@@ -537,10 +533,6 @@ module std_stddef_h [system] {
textual header "stddef.h"
export *
}
-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 166c9a77c08e70..e5a916da0b44a0 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)",
@@ -69,7 +68,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
``````````
</details>
https://github.com/llvm/llvm-project/pull/107436
More information about the libcxx-commits
mailing list