Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
//
//===----------------------------------------------------------------------===//

// MSVC warning C4244: 'argument': conversion from 'const _Ty2' to 'T', possible loss of data
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4244

// <algorithm>

// UNSUPPORTED: c++03, c++11, c++14, c++17
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@
// equal(Iter1 first1, Iter1 last1, Iter2 first2, Iter2 last2);

// We test the cartesian product, so we sometimes compare differently signed types
// ADDITIONAL_COMPILE_FLAGS: -Wno-sign-compare
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-sign-compare
// MSVC warning C4242: 'argument': conversion from 'int' to 'const _Ty', possible loss of data
// MSVC warning C4244: 'argument': conversion from 'wchar_t' to 'const _Ty', possible loss of data
// MSVC warning C4389: '==': signed/unsigned mismatch
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4242 /wd4244 /wd4389

#include <algorithm>
#include <cassert>
Expand Down Expand Up @@ -58,6 +62,10 @@ struct Test {
struct TestNarrowingEqualTo {
template <class UnderlyingType>
TEST_CONSTEXPR_CXX20 void operator()() {
TEST_DIAGNOSTIC_PUSH
// MSVC warning C4310: cast truncates constant value
TEST_MSVC_DIAGNOSTIC_IGNORED(4310)

UnderlyingType a[] = {
UnderlyingType(0x1000),
UnderlyingType(0x1001),
Expand All @@ -71,6 +79,8 @@ struct TestNarrowingEqualTo {
UnderlyingType(0x1603),
UnderlyingType(0x1604)};

TEST_DIAGNOSTIC_POP

assert(std::equal(a, a + 5, b, std::equal_to<char>()));
#if TEST_STD_VER >= 14
assert(std::equal(a, a + 5, b, b + 5, std::equal_to<char>()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
//
//===----------------------------------------------------------------------===//

// ADDITIONAL_COMPILE_FLAGS: -Wno-sign-compare
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-sign-compare
// MSVC warning C4389: '==': signed/unsigned mismatch
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4389

// <algorithm>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17

// ADDITIONAL_COMPILE_FLAGS: -Wno-sign-compare
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-sign-compare
// MSVC warning C4242: 'argument': conversion from 'const _Ty' to 'ElementT', possible loss of data
// MSVC warning C4244: 'argument': conversion from 'const _Ty' to 'ElementT', possible loss of data
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4242 /wd4244

// template<input_iterator I, sentinel_for<I> S, class T, class Proj = identity>
// requires indirect_binary_predicate<ranges::equal_to, projected<I, Proj>, const T*>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,15 @@ void test() {

TEST_IGNORE_NODISCARD a.is_lock_free();

TEST_DIAGNOSTIC_PUSH
// MSVC warning C4197: 'volatile std::atomic<operator_hijacker>': top-level volatile in cast is ignored
TEST_MSVC_DIAGNOSTIC_IGNORED(4197)

TEST_IGNORE_NODISCARD T();
TEST_IGNORE_NODISCARD T(v);

TEST_DIAGNOSTIC_POP

TEST_IGNORE_NODISCARD a.load();
TEST_IGNORE_NODISCARD static_cast<typename T::value_type>(a);
a.store(v);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,16 @@ void test() {

a.store(v);
a = v;

TEST_DIAGNOSTIC_PUSH
// MSVC warning C4197: 'volatile std::atomic<operator_hijacker *>': top-level volatile in cast is ignored
TEST_MSVC_DIAGNOSTIC_IGNORED(4197)

TEST_IGNORE_NODISCARD T();
TEST_IGNORE_NODISCARD T(v);

TEST_DIAGNOSTIC_POP

TEST_IGNORE_NODISCARD a.load();
TEST_IGNORE_NODISCARD static_cast<typename T::value_type>(a);
TEST_IGNORE_NODISCARD* a;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

// We voluntarily use std::default_initializable on types that have redundant
// or ignored cv-qualifiers -- don't warn about it.
// ADDITIONAL_COMPILE_FLAGS: -Wno-ignored-qualifiers
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-ignored-qualifiers

// template<class T>
// concept default_initializable = constructible_from<T> &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// Some fields in the test case variables are deliberately not explicitly initialized, this silences a warning on GCC.
// ADDITIONAL_COMPILE_FLAGS: -Wno-missing-field-initializers
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-missing-field-initializers

// <map>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// Some fields in the test case variables are deliberately not explicitly initialized, this silences a warning on GCC.
// ADDITIONAL_COMPILE_FLAGS: -Wno-missing-field-initializers
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-missing-field-initializers

// <map>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// Some fields in the test case variables are deliberately not explicitly initialized, this silences a warning on GCC.
// ADDITIONAL_COMPILE_FLAGS: -Wno-missing-field-initializers
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-missing-field-initializers

// <set>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// Some fields in the test case variables are deliberately not explicitly initialized, this silences a warning on GCC.
// ADDITIONAL_COMPILE_FLAGS: -Wno-missing-field-initializers
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-missing-field-initializers

// <set>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
// template <size_t I, class T, size_t N> T& get(array<T, N>& a);

// Prevent -Warray-bounds from issuing a diagnostic when testing with clang verify.
// ADDITIONAL_COMPILE_FLAGS: -Wno-array-bounds
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-array-bounds

#include <array>
#include <cassert>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// Some fields in the test case variables are deliberately not explicitly initialized, this silences a warning on GCC.
// ADDITIONAL_COMPILE_FLAGS: -Wno-missing-field-initializers
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-missing-field-initializers

// <unordered_map>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// Some fields in the test case variables are deliberately not explicitly initialized, this silences a warning on GCC.
// ADDITIONAL_COMPILE_FLAGS: -Wno-missing-field-initializers
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-missing-field-initializers

// <unordered_map>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// Some fields in the test case variables are deliberately not explicitly initialized, this silences a warning on GCC.
// ADDITIONAL_COMPILE_FLAGS: -Wno-missing-field-initializers
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-missing-field-initializers

// <set>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// Some fields in the test case variables are deliberately not explicitly initialized, this silences a warning on GCC.
// ADDITIONAL_COMPILE_FLAGS: -Wno-missing-field-initializers
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-missing-field-initializers

// <set>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
//
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// ADDITIONAL_COMPILE_FLAGS: -Wno-ctad-maybe-unsupported
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-ctad-maybe-unsupported

// <mdspan>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
//===----------------------------------------------------------------------===//
// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20

// MSVC warning C4244: 'initializing': conversion from '_Ty' to '_Ty', possible loss of data
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4244

// <mdspan>

// template<class OtherElementType, class OtherExtents,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
//
//===----------------------------------------------------------------------===//

// MSVC warning C4611: interaction between '_setjmp' and C++ object destruction is non-portable
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4611

// test <setjmp.h>
//
// Even though <setjmp.h> is not provided by libc++, we still test that
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20

// ADDITIONAL_COMPILE_FLAGS: -Wno-unused-value
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-unused-value

#include <limits>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
//===----------------------------------------------------------------------===//

// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS -D_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT
// MSVC warning C4242: '+=': conversion from 'const _Ty' to 'size_t', possible loss of data
// MSVC warning C4244: 'argument': conversion from 'std::streamsize' to 'size_t', possible loss of data
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4242 /wd4244
// UNSUPPORTED: c++03

// <fstream>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
//===----------------------------------------------------------------------===//

// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS -D_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT
// MSVC warning C4242: '+=': conversion from 'const _Ty' to 'size_t', possible loss of data
// MSVC warning C4244: 'argument': conversion from 'std::streamsize' to 'size_t', possible loss of data
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4242 /wd4244
// UNSUPPORTED: c++03

// <fstream>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
// <TODO:Remove brackets> below

// Make sure we catch forced conversions to the difference_type if they happen.
// ADDITIONAL_COMPILE_FLAGS<TODO:Remove brackets>: -Wsign-conversion
// ADDITIONAL_COMPILE_FLAGS<TODO:Remove brackets>(gcc-style-warnings): -Wsign-conversion

#include <iterator>
#include <cassert>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
//
//===----------------------------------------------------------------------===//

// MSVC warning C4611: interaction between '_setjmp' and C++ object destruction is non-portable
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4611

// test <csetjmp>

#include <csetjmp>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17

// This is a compile-only test, so "inline function is not defined" warnings are irrelevant.
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-undefined-inline

// template<input_range V, forward_range Pattern>
// requires view<V> && view<Pattern> &&
// indirectly_comparable<iterator_t<V>, iterator_t<Pattern>, ranges::equal_to> &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
//
//===----------------------------------------------------------------------===//

// MSVC warning C4244: 'argument': conversion from '_Ty' to 'int', possible loss of data
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd4244

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20

// template<class C, input_range R, class... Args> requires (!view<C>)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
// To silence a GCC warning-turned-error re. `BadAlloc::value_type`.
// ADDITIONAL_COMPILE_FLAGS: -Wno-unused-local-typedefs
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-unused-local-typedefs

// template<ranges::input_range R,
// class Allocator = allocator<ranges::range_value_t<R>>>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,19 @@

int condition_variable_lock_skipped_counter = 0;

TEST_DIAGNOSTIC_PUSH
// MSVC warning C4583: 'X::cv_': destructor is not implicitly called
TEST_MSVC_DIAGNOSTIC_IGNORED(4583)

union X {
X() : cv_() {}
~X() {}
std::condition_variable cv_;
unsigned char bytes_[sizeof(std::condition_variable)];
};

TEST_DIAGNOSTIC_POP

void test()
{
constexpr int N = 3;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
// UNSUPPORTED: libcpp-has-no-experimental-stop_token
// UNSUPPORTED: c++03, c++11, c++14, c++17
// XFAIL: availability-synchronization_library-missing
// ADDITIONAL_COMPILE_FLAGS: -Wno-self-move
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-self-move

// jthread& operator=(jthread&&) noexcept;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@

// Ignore warnings about volatile in parameters being deprecated.
// We know it is, but we still have to test it.
#if defined(TEST_COMPILER_GCC)
# pragma GCC diagnostic ignored "-Wvolatile"
#endif
TEST_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-volatile")
TEST_GCC_DIAGNOSTIC_IGNORED("-Wvolatile")
// MSVC warning C5215: a function parameter with a volatile qualified type is deprecated in C++20
TEST_MSVC_DIAGNOSTIC_IGNORED(5215)

struct wat
{
Expand Down Expand Up @@ -65,9 +66,6 @@ void test_result_of_imp()
#endif
}

// Do not warn on deprecated uses of 'volatile' below.
_LIBCPP_SUPPRESS_DEPRECATED_PUSH

int main(int, char**)
{
{
Expand Down Expand Up @@ -184,5 +182,3 @@ int main(int, char**)

return 0;
}

_LIBCPP_SUPPRESS_DEPRECATED_POP
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
// UNSUPPORTED: c++03, c++11

// ignore deprecated volatile return types
// ADDITIONAL_COMPILE_FLAGS: -Wno-deprecated-volatile
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-deprecated-volatile
// MSVC warning C5216: 'volatile int' a volatile qualified return type is deprecated in C++20
// ADDITIONAL_COMPILE_FLAGS(cl-style-warnings): /wd5216

#include <type_traits>
#include <utility>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// UNSUPPORTED: c++03

// Self assignment post-conditions are tested.
// ADDITIONAL_COMPILE_FLAGS: -Wno-self-move
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-self-move

// <memory>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

// We make sure that it is not ill-formed, however we still produce a warning for
// this one because explicit construction from a variant using CTAD is ambiguous
// (in the sense that the programer intent is not clear).
// ADDITIONAL_COMPILE_FLAGS: -Wno-ctad-maybe-unsupported
// (in the sense that the programmer intent is not clear).
// ADDITIONAL_COMPILE_FLAGS(gcc-style-warnings): -Wno-ctad-maybe-unsupported

#include <variant>

Expand Down
10 changes: 0 additions & 10 deletions libcxx/test/support/msvc_stdlib_force_include.h
Original file line number Diff line number Diff line change
Expand Up @@ -104,14 +104,4 @@ const AssertionDialogAvoider assertion_dialog_avoider{};

#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")
#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))
#endif // __clang__

#endif // SUPPORT_MSVC_STDLIB_FORCE_INCLUDE_H
Loading