From 9c434b47332a7e4128e5bedba44e4de18eadd564 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Fri, 16 Feb 2024 16:45:00 -0500 Subject: [PATCH] [libc++] Only include from the C library if it exists (#81887) In 2cea1babefbb, we removed the header provided by libc++. However, we did not conditionally include the underlying header only if the C library provides one, which we otherwise do consistently (see e.g. 647ddc08f43c). rdar://122978778 (cherry picked from commit d8278b682386f51dfba204849c624672a3df40c7) --- libcxx/include/csetjmp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libcxx/include/csetjmp b/libcxx/include/csetjmp index d219c8e6cb2250..9012cad22ebe74 100644 --- a/libcxx/include/csetjmp +++ b/libcxx/include/csetjmp @@ -33,7 +33,13 @@ void longjmp(jmp_buf env, int val); #include <__assert> // all public C++ headers provide the assertion handler #include <__config> -#include +// is not provided by libc++ +#if __has_include() +# include +# ifdef _LIBCPP_SETJMP_H +# error "If libc++ starts defining , the __has_include check should move to libc++'s " +# endif +#endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header