libstdc++: Fix -Wsystem-headers warnings in tests

libstdc++-v3/ChangeLog:

	* testsuite/18_support/new_nothrow.cc: Add missing noexcept
	to operator delete replacements.
	* testsuite/20_util/any/cons/92156.cc: Disable
	-Winit-list-lifetime warnings from instantiating invalid
	specialization of manager function.
	* testsuite/20_util/any/modifiers/92156.cc: Likewise.
	* testsuite/20_util/default_delete/void_neg.cc: Prune additional
	diagnostics.
	* testsuite/20_util/headers/memory/synopsis.cc: Add missing
	noexcept.
	* testsuite/20_util/shared_ptr/cons/void_neg.cc: Prune
	additional diagnostic.
	* testsuite/20_util/unique_ptr/creation/for_overwrite.cc: Add
	missing noexcept to operator delete replacements.
	* testsuite/21_strings/basic_string/cons/char/103919.cc:
	Likewise.
	* testsuite/23_containers/map/modifiers/emplace/92300.cc:
	Likewise.
	* testsuite/23_containers/map/modifiers/insert/92300.cc:
	Likewise.
	* testsuite/24_iterators/headers/iterator/range_access_c++11.cc:
	Add missing noexcept to synopsis declarations.
	* testsuite/24_iterators/headers/iterator/range_access_c++14.cc:
	Likewise.
	* testsuite/24_iterators/headers/iterator/range_access_c++17.cc:
	Likewise.
This commit is contained in:
Jonathan Wakely 2022-11-07 15:00:34 +00:00
parent 8f6d25f19b
commit bbcb84bba0
13 changed files with 40 additions and 27 deletions

View file

@ -64,7 +64,13 @@ void* operator new (size_t n)
}
}
void operator delete (void *p)
#if __cplusplus >= 201103L
#define NOEXCEPT noexcept
#else
#define NOEXCEPT
#endif
void operator delete (void *p) NOEXCEPT
{
++delete_called;
if (p)
@ -77,18 +83,18 @@ void* operator new[] (size_t n)
return operator new(n);
}
void operator delete[] (void *p)
void operator delete[] (void *p) NOEXCEPT
{
++delete_vec_called;
operator delete(p);
}
#if __cplusplus >= 201402L
void operator delete (void *p, std::size_t)
void operator delete (void *p, std::size_t) noexcept
{
::operator delete(p);
}
void operator delete[] (void *p, std::size_t)
void operator delete[] (void *p, std::size_t) noexcept
{
::operator delete[](p);
}

View file

@ -1,4 +1,5 @@
// { dg-do run { target c++17 } }
// { dg-options "-Wno-init-list-lifetime" }
// Copyright (C) 2020-2022 Free Software Foundation, Inc.
//

View file

@ -1,4 +1,5 @@
// { dg-do run { target c++17 } }
// { dg-options "-Wno-init-list-lifetime" }
// Copyright (C) 2020-2022 Free Software Foundation, Inc.
//

View file

@ -27,3 +27,6 @@ void test01()
d(nullptr); // { dg-error "here" }
// { dg-error "delete pointer to incomplete type" "" { target *-*-* } 0 }
}
// { dg-prune-output "invalid application of 'sizeof' to a void type" }
// { dg-prune-output "deleting 'void*' is undefined" }

View file

@ -32,7 +32,7 @@ namespace std
template<class Ptr> struct pointer_traits;
template<class T> struct pointer_traits<T*>;
void* align(size_t alignment, size_t size, void*& ptr, size_t& space);
void* align(size_t alignment, size_t size, void*& ptr, size_t& space) noexcept;
struct allocator_arg_t;
extern const allocator_arg_t allocator_arg;

View file

@ -31,3 +31,5 @@ void test01()
using std::shared_ptr;
using std::is_constructible;
static_assert(!is_constructible<shared_ptr<void>, const void*>::value, "");
// { dg-prune-output "invalid application of 'sizeof' to a void type" }

View file

@ -41,8 +41,8 @@ void* operator new(std::size_t n)
return p;
}
void operator delete(void* p) { std::free(p); }
void operator delete(void* p, std::size_t) { std::free(p); }
void operator delete(void* p) noexcept { std::free(p); }
void operator delete(void* p, std::size_t) noexcept { std::free(p); }
void
test01()

View file

@ -14,12 +14,12 @@ void* operator new(std::size_t n)
return std::malloc(n);
}
void operator delete(void* p)
void operator delete(void* p) noexcept
{
std::free(p);
}
void operator delete(void* p, std::size_t)
void operator delete(void* p, std::size_t) noexcept
{
std::free(p);
}

View file

@ -12,12 +12,12 @@ void* operator new(std::size_t n)
return std::malloc(n);
}
void operator delete(void* p)
void operator delete(void* p) noexcept
{
std::free(p);
}
void operator delete(void* p, std::size_t)
void operator delete(void* p, std::size_t) noexcept
{
std::free(p);
}

View file

@ -12,12 +12,12 @@ void* operator new(std::size_t n)
return std::malloc(n);
}
void operator delete(void* p)
void operator delete(void* p) noexcept
{
std::free(p);
}
void operator delete(void* p, std::size_t)
void operator delete(void* p, std::size_t) noexcept
{
std::free(p);
}

View file

@ -28,6 +28,6 @@ namespace std
template<class C> auto end(C& c) -> decltype(c.end());
template<class C> auto end(const C& c) -> decltype(c.end());
template<class T, size_t N> T* begin(T (&array)[N]);
template<class T, size_t N> T* end(T (&array)[N]);
template<class T, size_t N> T* begin(T (&array)[N]) noexcept;
template<class T, size_t N> T* end(T (&array)[N]) noexcept;
}

View file

@ -28,8 +28,8 @@ namespace std
template<class C> auto end(C& c) -> decltype(c.end());
template<class C> auto end(const C& c) -> decltype(c.end());
template<class T, size_t N> constexpr T* begin(T (&array)[N]);
template<class T, size_t N> constexpr T* end(T (&array)[N]);
template<class T, size_t N> constexpr T* begin(T (&array)[N]) noexcept;
template<class T, size_t N> constexpr T* end(T (&array)[N]) noexcept;
template<class C> auto cbegin(const C& c) -> decltype(c.begin());
template<class C> auto cend(const C& c) -> decltype(c.end());
@ -41,14 +41,14 @@ namespace std
template<class C> auto rend(const C& c) -> decltype(c.rend());
template<class T, size_t N>
reverse_iterator<T*> rbegin(T (&array)[N]);
reverse_iterator<T*> rbegin(T (&array)[N]) noexcept;
template<class T, size_t N>
reverse_iterator<T*> rend(T (&array)[N]);
reverse_iterator<T*> rend(T (&array)[N]) noexcept;
template<class E>
reverse_iterator<const E*> rbegin(initializer_list<E>);
reverse_iterator<const E*> rbegin(initializer_list<E>) noexcept;
template<class E>
reverse_iterator<const E*> rend(initializer_list<E>);
reverse_iterator<const E*> rend(initializer_list<E>) noexcept;
template<class C>
auto crbegin(const C& c) -> decltype(std::rbegin(c));

View file

@ -27,8 +27,8 @@ namespace std
template<class C> constexpr auto end(C& c) -> decltype(c.end());
template<class C> constexpr auto end(const C& c) -> decltype(c.end());
template<class T, size_t N> constexpr T* begin(T (&array)[N]);
template<class T, size_t N> constexpr T* end(T (&array)[N]);
template<class T, size_t N> constexpr T* begin(T (&array)[N]) noexcept;
template<class T, size_t N> constexpr T* end(T (&array)[N]) noexcept;
template<class C> constexpr auto cbegin(const C& c) -> decltype(c.begin());
template<class C> constexpr auto cend(const C& c) -> decltype(c.end());
@ -40,14 +40,14 @@ namespace std
template<class C> constexpr auto rend(const C& c) -> decltype(c.rend());
template<class T, size_t N>
constexpr reverse_iterator<T*> rbegin(T (&array)[N]);
constexpr reverse_iterator<T*> rbegin(T (&array)[N]) noexcept;
template<class T, size_t N>
constexpr reverse_iterator<T*> rend(T (&array)[N]);
constexpr reverse_iterator<T*> rend(T (&array)[N]) noexcept;
template<class E>
constexpr reverse_iterator<const E*> rbegin(initializer_list<E>);
constexpr reverse_iterator<const E*> rbegin(initializer_list<E>) noexcept;
template<class E>
constexpr reverse_iterator<const E*> rend(initializer_list<E>);
constexpr reverse_iterator<const E*> rend(initializer_list<E>) noexcept;
template<class C>
constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c));