From 7b1e8acfae2c1b4ee3c2199879783d2189ca3d0f Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 19 Oct 2018 14:37:05 +0100 Subject: [PATCH] Fix testsuite failures in Debug Mode This fixes the following testsuite failures on ia32 when compiled with -D_GLIBCXX_DEBUG: FAIL: 23_containers/map/modifiers/erase/dr130-linkage-check.cc FAIL: 23_containers/multimap/modifiers/erase/dr130-linkage-check.cc FAIL: 23_containers/multiset/modifiers/erase/dr130-linkage-check.cc FAIL: 23_containers/set/modifiers/erase/dr130-linkage-check.cc The normal mode containers already use the abi-tag to mangle these overloads differently, but the debug mode versions weren't fixed. * include/debug/map.h (map::erase(iterator)): Add abi-tag so that C++11 version mangles differently from incompatible C++98 version. * include/debug/multimap.h (multimap::erase(iterator)): Likewise. * include/debug/multiset.h (multiset::erase(iterator)) (multiset::erase(const_iterator, const_iterator)): Likewise. * include/debug/set.h (set::erase(iterator)) (multiset::erase(const_iterator, const_iterator)): Likewise. From-SVN: r265313 --- libstdc++-v3/ChangeLog | 10 ++++++++++ libstdc++-v3/include/debug/map.h | 1 + libstdc++-v3/include/debug/multimap.h | 1 + libstdc++-v3/include/debug/multiset.h | 2 ++ libstdc++-v3/include/debug/set.h | 2 ++ 5 files changed, 16 insertions(+) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 5edbec9d36c..ea4928f5a78 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,13 @@ +2018-10-19 Jonathan Wakely + + * include/debug/map.h (map::erase(iterator)): Add abi-tag so that + C++11 version mangles differently from incompatible C++98 version. + * include/debug/multimap.h (multimap::erase(iterator)): Likewise. + * include/debug/multiset.h (multiset::erase(iterator)) + (multiset::erase(const_iterator, const_iterator)): Likewise. + * include/debug/set.h (set::erase(iterator)) + (multiset::erase(const_iterator, const_iterator)): Likewise. + 2018-10-18 Jonathan Wakely * testsuite/20_util/duration/cons/2.cc: Add -ffloat-store to fix diff --git a/libstdc++-v3/include/debug/map.h b/libstdc++-v3/include/debug/map.h index 6821fc561e4..cb29e9ee2a5 100644 --- a/libstdc++-v3/include/debug/map.h +++ b/libstdc++-v3/include/debug/map.h @@ -482,6 +482,7 @@ namespace __debug return { _Base::erase(__position.base()), this }; } + _GLIBCXX_ABI_TAG_CXX11 iterator erase(iterator __position) { return erase(const_iterator(__position)); } diff --git a/libstdc++-v3/include/debug/multimap.h b/libstdc++-v3/include/debug/multimap.h index d16ed47ab74..38e38c8c1ce 100644 --- a/libstdc++-v3/include/debug/multimap.h +++ b/libstdc++-v3/include/debug/multimap.h @@ -361,6 +361,7 @@ namespace __debug return { _Base::erase(__position.base()), this }; } + _GLIBCXX_ABI_TAG_CXX11 iterator erase(iterator __position) { return erase(const_iterator(__position)); } diff --git a/libstdc++-v3/include/debug/multiset.h b/libstdc++-v3/include/debug/multiset.h index bf154ecad6e..2dd2f731627 100644 --- a/libstdc++-v3/include/debug/multiset.h +++ b/libstdc++-v3/include/debug/multiset.h @@ -324,6 +324,7 @@ namespace __debug #endif // C++17 #if __cplusplus >= 201103L + _GLIBCXX_ABI_TAG_CXX11 iterator erase(const_iterator __position) { @@ -358,6 +359,7 @@ namespace __debug } #if __cplusplus >= 201103L + _GLIBCXX_ABI_TAG_CXX11 iterator erase(const_iterator __first, const_iterator __last) { diff --git a/libstdc++-v3/include/debug/set.h b/libstdc++-v3/include/debug/set.h index c406fb424f4..d8dbaf268a2 100644 --- a/libstdc++-v3/include/debug/set.h +++ b/libstdc++-v3/include/debug/set.h @@ -338,6 +338,7 @@ namespace __debug #endif // C++17 #if __cplusplus >= 201103L + _GLIBCXX_ABI_TAG_CXX11 iterator erase(const_iterator __position) { @@ -370,6 +371,7 @@ namespace __debug } #if __cplusplus >= 201103L + _GLIBCXX_ABI_TAG_CXX11 iterator erase(const_iterator __first, const_iterator __last) {