Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions libcxx/include/source_location
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ namespace std {

_LIBCPP_BEGIN_NAMESPACE_STD

#if _LIBCPP_STD_VER >= 20 && __has_builtin(__builtin_source_location) && \
!(defined(_LIBCPP_APPLE_CLANG_VER) && _LIBCPP_APPLE_CLANG_VER <= 1403)
#if _LIBCPP_STD_VER >= 20

class source_location {
// The names source_location::__impl, _M_file_name, _M_function_name, _M_line, and _M_column
Expand Down Expand Up @@ -79,8 +78,7 @@ public:
}
};

#endif // _LIBCPP_STD_VER >= 20 && __has_builtin(__builtin_source_location) && !(defined(_LIBCPP_APPLE_CLANG_VER) &&
// _LIBCPP_APPLE_CLANG_VER <= 1403)
#endif // _LIBCPP_STD_VER >= 20

_LIBCPP_END_NAMESPACE_STD

Expand Down
4 changes: 1 addition & 3 deletions libcxx/include/version
Original file line number Diff line number Diff line change
Expand Up @@ -414,9 +414,7 @@ __cpp_lib_within_lifetime 202306L <type_traits>
# define __cpp_lib_shared_ptr_arrays 201707L
# define __cpp_lib_shift 201806L
// # define __cpp_lib_smart_ptr_for_overwrite 202002L
# if __has_builtin(__builtin_source_location) && !(defined(_LIBCPP_APPLE_CLANG_VER) && _LIBCPP_APPLE_CLANG_VER <= 1403)
# define __cpp_lib_source_location 201907L
# endif
# define __cpp_lib_source_location 201907L
# define __cpp_lib_span 202002L
# define __cpp_lib_ssize 201902L
# define __cpp_lib_starts_ends_with 201711L
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,47 +42,29 @@

#elif TEST_STD_VER == 20

# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++20"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++20"
# endif
# else
# ifdef __cpp_lib_source_location
# error "__cpp_lib_source_location should not be defined when the requirement '__has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)' is not met!"
# endif
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++20"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++20"
# endif

#elif TEST_STD_VER == 23

# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++23"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++23"
# endif
# else
# ifdef __cpp_lib_source_location
# error "__cpp_lib_source_location should not be defined when the requirement '__has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)' is not met!"
# endif
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++23"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++23"
# endif

#elif TEST_STD_VER > 23

# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++26"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++26"
# endif
# else
# ifdef __cpp_lib_source_location
# error "__cpp_lib_source_location should not be defined when the requirement '__has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)' is not met!"
# endif
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++26"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++26"
# endif

#endif // TEST_STD_VER > 23
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4015,17 +4015,11 @@
# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
# endif

# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++20"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++20"
# endif
# else
# ifdef __cpp_lib_source_location
# error "__cpp_lib_source_location should not be defined when the requirement '__has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)' is not met!"
# endif
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++20"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++20"
# endif

# ifndef __cpp_lib_span
Expand Down Expand Up @@ -5539,17 +5533,11 @@
# error "__cpp_lib_smart_ptr_owner_equality should not be defined before c++26"
# endif

# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++23"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++23"
# endif
# else
# ifdef __cpp_lib_source_location
# error "__cpp_lib_source_location should not be defined when the requirement '__has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)' is not met!"
# endif
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++23"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++23"
# endif

# ifndef __cpp_lib_span
Expand Down Expand Up @@ -7282,17 +7270,11 @@
# endif
# endif

# if __has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++26"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++26"
# endif
# else
# ifdef __cpp_lib_source_location
# error "__cpp_lib_source_location should not be defined when the requirement '__has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)' is not met!"
# endif
# ifndef __cpp_lib_source_location
# error "__cpp_lib_source_location should be defined in c++26"
# endif
# if __cpp_lib_source_location != 201907L
# error "__cpp_lib_source_location should have the value 201907L in c++26"
# endif

# ifndef __cpp_lib_span
Expand Down
113 changes: 59 additions & 54 deletions libcxx/test/support/msvc_stdlib_force_include.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,98 +13,103 @@
// MSVC standard library.

#ifndef _LIBCXX_IN_DEVCRT
// Silence warnings about CRT machinery.
#define _CRT_SECURE_NO_WARNINGS 1
// Silence warnings about CRT machinery.
# define _CRT_SECURE_NO_WARNINGS 1

// Avoid assertion dialogs.
#define _CRT_SECURE_INVALID_PARAMETER(EXPR) ::abort()
// Avoid assertion dialogs.
# define _CRT_SECURE_INVALID_PARAMETER(EXPR) ::abort()

// Declare POSIX function names. (By default, Clang -fno-ms-compatibility causes them to be omitted.)
# define _CRT_DECLARE_NONSTDC_NAMES 1

// Silence warnings about POSIX function names.
# define _CRT_NONSTDC_NO_WARNINGS 1

// Avoid Windows.h macroizing min() and max().
# define NOMINMAX 1
#endif // _LIBCXX_IN_DEVCRT

#include <crtdbg.h>
#include <stdlib.h>

#if defined(_LIBCPP_VERSION)
#error This header may not be used when targeting libc++
# error This header may not be used when targeting libc++
#endif

#ifndef _LIBCXX_IN_DEVCRT
struct AssertionDialogAvoider {
AssertionDialogAvoider() {
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);
AssertionDialogAvoider() {
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);

_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
}
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
_CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR);
}
};

const AssertionDialogAvoider assertion_dialog_avoider{};
#endif // _LIBCXX_IN_DEVCRT

// MSVC frontend only configurations
#if !defined(__clang__)
// Simulate feature-test macros.
#define __has_feature(X) _MSVC_HAS_FEATURE_ ## X
#define _MSVC_HAS_FEATURE_cxx_exceptions 1
#define _MSVC_HAS_FEATURE_cxx_rtti 1
#define _MSVC_HAS_FEATURE_address_sanitizer 0
#define _MSVC_HAS_FEATURE_memory_sanitizer 0
#define _MSVC_HAS_FEATURE_thread_sanitizer 0

#define __has_attribute(X) _MSVC_HAS_ATTRIBUTE_ ## X
#define _MSVC_HAS_ATTRIBUTE_vector_size 0

// Silence compiler warnings.
#pragma warning(disable: 4180) // qualifier applied to function type has no meaning; ignored
#pragma warning(disable: 4324) // structure was padded due to alignment specifier
#pragma warning(disable: 4521) // multiple copy constructors specified
#pragma warning(disable: 4702) // unreachable code
#pragma warning(disable: 28251) // Inconsistent annotation for 'new': this instance has no annotations.
#endif // !defined(__clang__)
// Simulate feature-test macros.
# define __has_feature(X) _MSVC_HAS_FEATURE_##X
# define _MSVC_HAS_FEATURE_cxx_exceptions 1
# define _MSVC_HAS_FEATURE_cxx_rtti 1
# define _MSVC_HAS_FEATURE_address_sanitizer 0
# define _MSVC_HAS_FEATURE_hwaddress_sanitizer 0
# define _MSVC_HAS_FEATURE_memory_sanitizer 0
# define _MSVC_HAS_FEATURE_thread_sanitizer 0

# define __has_attribute(X) _MSVC_HAS_ATTRIBUTE_##X
# define _MSVC_HAS_ATTRIBUTE_vector_size 0

// Silence compiler warnings.
# pragma warning(disable : 4180) // qualifier applied to function type has no meaning; ignored
# pragma warning(disable : 4324) // structure was padded due to alignment specifier
# pragma warning(disable : 4521) // multiple copy constructors specified
# pragma warning(disable : 4702) // unreachable code
# pragma warning(disable : 28251) // Inconsistent annotation for 'new': this instance has no annotations.
#endif // !defined(__clang__)

#ifndef _LIBCXX_IN_DEVCRT
// atomic_is_lock_free.pass.cpp needs this VS 2015 Update 2 fix.
#define _ENABLE_ATOMIC_ALIGNMENT_FIX
// atomic_is_lock_free.pass.cpp needs this VS 2015 Update 2 fix.
# define _ENABLE_ATOMIC_ALIGNMENT_FIX

// Restore features that are removed in C++20.
#define _HAS_FEATURES_REMOVED_IN_CXX20 1
// Restore features that are removed in C++20.
# define _HAS_FEATURES_REMOVED_IN_CXX20 1

// Silence warnings about the unspecified complex<non-floating-point>
#define _SILENCE_NONFLOATING_COMPLEX_DEPRECATION_WARNING
// Silence warnings about the unspecified complex<non-floating-point>
# define _SILENCE_NONFLOATING_COMPLEX_DEPRECATION_WARNING

// Silence warnings about features that are deprecated in non-default language modes.
#define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
#define _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS
#define _SILENCE_ALL_CXX23_DEPRECATION_WARNINGS
// Silence warnings about features that are deprecated in non-default language modes.
# define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
# define _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS
# define _SILENCE_ALL_CXX23_DEPRECATION_WARNINGS
#endif // _LIBCXX_IN_DEVCRT

#include <version>

#if _HAS_CXX23
#define TEST_STD_VER 99
# define TEST_STD_VER 99
#elif _HAS_CXX20
#define TEST_STD_VER 20
# define TEST_STD_VER 20
#elif _HAS_CXX17
#define TEST_STD_VER 17
# define TEST_STD_VER 17
#else
#define TEST_STD_VER 14
# define TEST_STD_VER 14
#endif

#define _LIBCPP_AVAILABILITY_THROW_BAD_ANY_CAST

#ifdef __clang__
#define _LIBCPP_SUPPRESS_DEPRECATED_PUSH \
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wdeprecated\"")
#define _LIBCPP_SUPPRESS_DEPRECATED_POP \
_Pragma("GCC diagnostic pop")
# define _LIBCPP_SUPPRESS_DEPRECATED_PUSH \
_Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wdeprecated\"")
# define _LIBCPP_SUPPRESS_DEPRECATED_POP _Pragma("GCC diagnostic pop")
#else // ^^^ clang / MSVC vvv
#define _LIBCPP_SUPPRESS_DEPRECATED_PUSH \
__pragma(warning(push)) \
__pragma(warning(disable : 4996)) \
__pragma(warning(disable : 5215))
#define _LIBCPP_SUPPRESS_DEPRECATED_POP \
__pragma(warning(pop))
# define _LIBCPP_SUPPRESS_DEPRECATED_PUSH \
__pragma(warning(push)) __pragma(warning(disable : 4996)) __pragma(warning(disable : 5215))
# define _LIBCPP_SUPPRESS_DEPRECATED_POP __pragma(warning(pop))
#endif // __clang__

#endif // SUPPORT_MSVC_STDLIB_FORCE_INCLUDE_H
2 changes: 0 additions & 2 deletions libcxx/utils/generate_feature_test_macro_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -1072,8 +1072,6 @@ def add_version_header(tc):
"name": "__cpp_lib_source_location",
"values": {"c++20": 201907},
"headers": ["source_location"],
"test_suite_guard": "__has_builtin(__builtin_source_location) && !(defined(TEST_APPLE_CLANG_VER) && TEST_APPLE_CLANG_VER <= 1403)",
"libcxx_guard": "__has_builtin(__builtin_source_location) && !(defined(_LIBCPP_APPLE_CLANG_VER) && _LIBCPP_APPLE_CLANG_VER <= 1403)",
},
{
"name": "__cpp_lib_span",
Expand Down