summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities/utility/pairs
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2019-09-25 09:10:38 +0000
committerIlya Biryukov <ibiryukov@google.com>2019-09-25 09:10:38 +0000
commita3d337a9a7d00d82bb190c5e551181d3998f6b98 (patch)
tree24894b738fba0f734957c9af632f5bc1f584276f /libcxx/test/std/utilities/utility/pairs
parent436d9881a9a87b2c4177831435e85c8f47ce9ab1 (diff)
downloadbcm5719-llvm-a3d337a9a7d00d82bb190c5e551181d3998f6b98.tar.gz
bcm5719-llvm-a3d337a9a7d00d82bb190c5e551181d3998f6b98.zip
Revert r372777: [libc++] Implement LWG 2510 and its follow-ups
This also reverts: - r372778: [libc++] Implement LWG 3158 - r372782: [libc++] Try fixing tests that fail on GCC 5 and older - r372787: Purge mentions of GCC 4 from the test suite Reason: the change breaks compilation of LLVM with libc++, for details see http://lists.llvm.org/pipermail/libcxx-dev/2019-September/000599.html llvm-svn: 372832
Diffstat (limited to 'libcxx/test/std/utilities/utility/pairs')
-rw-r--r--libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp2
-rw-r--r--libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.fail.cpp29
-rw-r--r--libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.pass.cpp24
-rw-r--r--libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.fail.cpp42
-rw-r--r--libcxx/test/std/utilities/utility/pairs/pairs.pair/default.pass.cpp7
-rw-r--r--libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp3
6 files changed, 10 insertions, 97 deletions
diff --git a/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp b/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp
index 903aa935583..d70d060deb0 100644
--- a/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct.pass.cpp
@@ -12,7 +12,7 @@
// template <class T1, class T2> struct pair
-// struct piecewise_construct_t { explicit piecewise_construct_t() = default; };
+// struct piecewise_construct_t { };
// constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
#include <utility>
diff --git a/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.fail.cpp
deleted file mode 100644
index b8dd28a5764..00000000000
--- a/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.fail.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// UNSUPPORTED: c++98, c++03
-
-// Before GCC 6, aggregate initialization kicks in.
-// See https://stackoverflow.com/q/41799015/627587.
-// UNSUPPORTED: gcc-5
-
-// <utility>
-
-// struct piecewise_construct_t { explicit piecewise_construct_t() = default; };
-// constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
-
-// This test checks for LWG 2510.
-
-#include <utility>
-
-
-std::piecewise_construct_t f() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
-
-int main(int, char**) {
- return 0;
-}
diff --git a/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.pass.cpp b/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.pass.cpp
deleted file mode 100644
index 0fdba067487..00000000000
--- a/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.pass.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// UNSUPPORTED: c++98, c++03
-
-// <utility>
-
-// struct piecewise_construct_t { explicit piecewise_construct_t() = default; };
-// constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
-
-#include <utility>
-
-
-int main(int, char**) {
- std::piecewise_construct_t x = std::piecewise_construct;
- (void)x;
-
- return 0;
-}
diff --git a/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.fail.cpp
deleted file mode 100644
index 511f21ec301..00000000000
--- a/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.fail.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// UNSUPPORTED: c++98, c++03
-
-// Before GCC 6, aggregate initialization kicks in.
-// See https://stackoverflow.com/q/41799015/627587.
-// UNSUPPORTED: gcc-5
-
-// <utility>
-
-// template <class T1, class T2> struct pair
-
-// explicit(see-below) constexpr pair();
-
-// This test checks the conditional explicitness of std::pair's default
-// constructor as introduced by the resolution of LWG 2510.
-
-#include <utility>
-
-
-struct ImplicitlyDefaultConstructible {
- ImplicitlyDefaultConstructible() = default;
-};
-
-struct ExplicitlyDefaultConstructible {
- explicit ExplicitlyDefaultConstructible() = default;
-};
-
-std::pair<ImplicitlyDefaultConstructible, ExplicitlyDefaultConstructible> test1() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
-std::pair<ExplicitlyDefaultConstructible, ImplicitlyDefaultConstructible> test2() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
-std::pair<ExplicitlyDefaultConstructible, ExplicitlyDefaultConstructible> test3() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
-std::pair<ImplicitlyDefaultConstructible, ImplicitlyDefaultConstructible> test4() { return {}; }
-
-int main(int, char**) {
- return 0;
-}
diff --git a/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.pass.cpp b/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.pass.cpp
index d214972058c..de3730ef3cb 100644
--- a/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.pass.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.pass.cpp
@@ -10,7 +10,12 @@
// template <class T1, class T2> struct pair
-// explicit(see-below) constexpr pair();
+// constexpr pair();
+
+// This test doesn't pass due to a constexpr bug in GCC 4.9 that fails
+// to initialize any type without a user provided constructor in a constant
+// expression (e.g. float).
+// XFAIL: gcc-4.9
// NOTE: The SFINAE on the default constructor is tested in
// default-sfinae.pass.cpp
diff --git a/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp b/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp
index be7c0a8a8be..6841f286553 100644
--- a/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pairs.pair/trivial_copy_move.pass.cpp
@@ -13,6 +13,9 @@
// pair(pair const&) = default;
// pair(pair&&) = default;
+// Doesn't pass due to use of is_trivially_* trait.
+// XFAIL: gcc-4.9
+
#include <utility>
#include <cassert>
OpenPOWER on IntegriCloud