diff options
Diffstat (limited to 'libcxx/test/std')
32 files changed, 56 insertions, 309 deletions
diff --git a/libcxx/test/std/experimental/simd/simd.cons/broadcast.pass.cpp b/libcxx/test/std/experimental/simd/simd.cons/broadcast.pass.cpp index 57a6cd57ee2..cf038e38427 100644 --- a/libcxx/test/std/experimental/simd/simd.cons/broadcast.pass.cpp +++ b/libcxx/test/std/experimental/simd/simd.cons/broadcast.pass.cpp @@ -8,6 +8,9 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// See GCC PR63723. +// UNSUPPORTED: gcc-4.9 + // <experimental/simd> // // [simd.class] diff --git a/libcxx/test/std/experimental/simd/simd.cons/generator.pass.cpp b/libcxx/test/std/experimental/simd/simd.cons/generator.pass.cpp index 7b7c883f427..500ccce817d 100644 --- a/libcxx/test/std/experimental/simd/simd.cons/generator.pass.cpp +++ b/libcxx/test/std/experimental/simd/simd.cons/generator.pass.cpp @@ -8,6 +8,9 @@ // UNSUPPORTED: c++98, c++03, c++11, c++14 +// See GCC PR63723. +// UNSUPPORTED: gcc-4.9 + // <experimental/simd> // // [simd.class] diff --git a/libcxx/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp index aa00a0d53b1..5170b1e5365 100644 --- a/libcxx/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp +++ b/libcxx/test/std/iterators/stream.iterators/istream.iterator/types.pass.cpp @@ -8,6 +8,9 @@ // <iterator> +// Test fails due to use of is_trivially_* trait. +// XFAIL: gcc-4.9 + // template <class T, class charT = char, class traits = char_traits<charT>, // class Distance = ptrdiff_t> // class istream_iterator diff --git a/libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/types.pass.cpp b/libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/types.pass.cpp index c2f323b03a6..a6c6435f10a 100644 --- a/libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/types.pass.cpp +++ b/libcxx/test/std/iterators/stream.iterators/istreambuf.iterator/types.pass.cpp @@ -8,6 +8,9 @@ // <iterator> +// Test fails due to use of is_trivially_* trait. +// XFAIL: gcc-4.9 + // template<class charT, class traits = char_traits<charT> > // class istreambuf_iterator // : public iterator<input_iterator_tag, charT, diff --git a/libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array14.pass.cpp b/libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array14.pass.cpp index c4e10715f27..d69c28be72b 100644 --- a/libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array14.pass.cpp +++ b/libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.array/sized_delete_array14.pass.cpp @@ -15,6 +15,10 @@ // (except clang-3.6 which temporarily enabled sized-deallocation) // UNSUPPORTED: clang, apple-clang +// NOTE: GCC 4.9.1 does not support sized-deallocation in C++14. However +// GCC 5.1 does. +// XFAIL: gcc-4.7, gcc-4.8, gcc-4.9 + #include <new> #include <cstddef> #include <cstdlib> diff --git a/libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete14.pass.cpp b/libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete14.pass.cpp index 819d62ae2fb..deb17d1ae74 100644 --- a/libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete14.pass.cpp +++ b/libcxx/test/std/language.support/support.dynamic/new.delete/new.delete.single/sized_delete14.pass.cpp @@ -15,6 +15,10 @@ // (except clang-3.6 which temporarily enabled sized-deallocation) // UNSUPPORTED: clang, apple-clang +// NOTE: GCC 4.9.1 does not support sized-deallocation in C++14. However +// GCC 5.1 does. +// XFAIL: gcc-4.7, gcc-4.8, gcc-4.9 + #include <new> #include <cstddef> #include <cstdlib> diff --git a/libcxx/test/std/language.support/support.dynamic/nothrow_t.fail.cpp b/libcxx/test/std/language.support/support.dynamic/nothrow_t.fail.cpp deleted file mode 100644 index 78ab087c3ea..00000000000 --- a/libcxx/test/std/language.support/support.dynamic/nothrow_t.fail.cpp +++ /dev/null @@ -1,30 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03 - -// Before GCC 6, aggregate initialization kicks in. -// See https://stackoverflow.com/q/41799015/627587. -// UNSUPPORTED: gcc-5 - -// struct nothrow_t { -// explicit nothrow_t() = default; -// }; -// extern const nothrow_t nothrow; - -// This test checks for LWG 2510. - -#include <new> - - -std::nothrow_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/language.support/support.dynamic/nothrow_t.pass.cpp b/libcxx/test/std/language.support/support.dynamic/nothrow_t.pass.cpp deleted file mode 100644 index 3a6231329f0..00000000000 --- a/libcxx/test/std/language.support/support.dynamic/nothrow_t.pass.cpp +++ /dev/null @@ -1,23 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// struct nothrow_t { -// explicit nothrow_t() = default; -// }; -// extern const nothrow_t nothrow; - -#include <new> - - -int main(int, char**) { - std::nothrow_t x = std::nothrow; - (void)x; - - return 0; -} diff --git a/libcxx/test/std/thread/thread.mutex/thread.lock/types.fail.cpp b/libcxx/test/std/thread/thread.mutex/thread.lock/types.fail.cpp deleted file mode 100644 index 4542c04c297..00000000000 --- a/libcxx/test/std/thread/thread.mutex/thread.lock/types.fail.cpp +++ /dev/null @@ -1,34 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03 -// UNSUPPORTED: libcpp-has-no-threads - -// Before GCC 6, aggregate initialization kicks in. -// See https://stackoverflow.com/q/41799015/627587. -// UNSUPPORTED: gcc-5 - -// <mutex> - -// struct defer_lock_t { explicit defer_lock_t() = default; }; -// struct try_to_lock_t { explicit try_to_lock_t() = default; }; -// struct adopt_lock_t { explicit adopt_lock_t() = default; }; - -// This test checks for LWG 2510. - -#include <mutex> - - -std::defer_lock_t f1() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::try_to_lock_t f2() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::adopt_lock_t f3() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} - -int main(int, char**) { - return 0; -} diff --git a/libcxx/test/std/thread/thread.mutex/thread.lock/types.pass.cpp b/libcxx/test/std/thread/thread.mutex/thread.lock/types.pass.cpp index c03ca4622aa..84c39baafa6 100644 --- a/libcxx/test/std/thread/thread.mutex/thread.lock/types.pass.cpp +++ b/libcxx/test/std/thread/thread.mutex/thread.lock/types.pass.cpp @@ -10,15 +10,16 @@ // <mutex> -// struct defer_lock_t { explicit defer_lock_t() = default; }; -// struct try_to_lock_t { explicit try_to_lock_t() = default; }; -// struct adopt_lock_t { explicit adopt_lock_t() = default; }; +// struct defer_lock_t {}; +// struct try_to_lock_t {}; +// struct adopt_lock_t {}; // // constexpr defer_lock_t defer_lock{}; // constexpr try_to_lock_t try_to_lock{}; // constexpr adopt_lock_t adopt_lock{}; #include <mutex> +#include <type_traits> #include "test_macros.h" @@ -32,5 +33,5 @@ int main(int, char**) T2 t2 = std::try_to_lock; ((void)t2); T3 t3 = std::adopt_lock; ((void)t3); - return 0; + return 0; } diff --git a/libcxx/test/std/utilities/function.objects/refwrap/type_properties.pass.cpp b/libcxx/test/std/utilities/function.objects/refwrap/type_properties.pass.cpp index d8d75443bf5..17eef26f07a 100644 --- a/libcxx/test/std/utilities/function.objects/refwrap/type_properties.pass.cpp +++ b/libcxx/test/std/utilities/function.objects/refwrap/type_properties.pass.cpp @@ -13,6 +13,9 @@ // Test that reference wrapper meets the requirements of CopyConstructible and // CopyAssignable, and TriviallyCopyable (starting in C++14). +// Test fails due to use of is_trivially_* trait. +// XFAIL: gcc-4.9 && c++14 + #include <functional> #include <type_traits> #include <string> diff --git a/libcxx/test/std/utilities/memory/allocator.tag/allocator_arg.fail.cpp b/libcxx/test/std/utilities/memory/allocator.tag/allocator_arg.fail.cpp deleted file mode 100644 index fb991d425f1..00000000000 --- a/libcxx/test/std/utilities/memory/allocator.tag/allocator_arg.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 - -// <memory> - -// struct allocator_arg_t { explicit allocator_arg_t() = default; }; -// const allocator_arg_t allocator_arg = allocator_arg_t(); - -// This test checks for LWG 2510. - -#include <memory> - - -std::allocator_arg_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/memory/allocator.tag/allocator_arg.pass.cpp b/libcxx/test/std/utilities/memory/allocator.tag/allocator_arg.pass.cpp index e22bec1e514..0253243319a 100644 --- a/libcxx/test/std/utilities/memory/allocator.tag/allocator_arg.pass.cpp +++ b/libcxx/test/std/utilities/memory/allocator.tag/allocator_arg.pass.cpp @@ -8,7 +8,7 @@ // <memory> -// struct allocator_arg_t { explicit allocator_arg_t() = default; }; +// struct allocator_arg_t { }; // const allocator_arg_t allocator_arg = allocator_arg_t(); #include <memory> @@ -21,5 +21,5 @@ int main(int, char**) { test(std::allocator_arg); - return 0; + return 0; } diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.addressof/constexpr_addressof.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.addressof/constexpr_addressof.pass.cpp index ae8a162ef2f..2aabf812a75 100644 --- a/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.addressof/constexpr_addressof.pass.cpp +++ b/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.addressof/constexpr_addressof.pass.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 -// XFAIL: gcc-5, gcc-6 +// XFAIL: gcc-4, gcc-5, gcc-6 // <memory> diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/has_unique_object_representations.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/has_unique_object_representations.pass.cpp index 8202fd73e99..e6f70123b2c 100644 --- a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/has_unique_object_representations.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/has_unique_object_representations.pass.cpp @@ -7,7 +7,7 @@ //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11, c++14 -// UNSUPPORTED: clang-3, clang-4, clang-5, apple-clang, gcc-5, gcc-6 +// UNSUPPORTED: clang-3, clang-4, clang-5, apple-clang, gcc-4, gcc-5, gcc-6 // type_traits diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_assignable.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_assignable.pass.cpp index 5113651dd39..124480c0755 100644 --- a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_assignable.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_assignable.pass.cpp @@ -10,6 +10,8 @@ // is_trivially_assignable +// XFAIL: gcc-4.9 + #include <type_traits> #include "test_macros.h" diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_assignable.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_assignable.pass.cpp index 17104f4af1d..91fbf69f4f2 100644 --- a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_assignable.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_assignable.pass.cpp @@ -10,6 +10,8 @@ // is_trivially_copy_assignable +// XFAIL: gcc-4.9 + #include <type_traits> #include "test_macros.h" diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp index 09647c7107e..5744d2ca0e8 100644 --- a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_copy_constructible.pass.cpp @@ -10,6 +10,8 @@ // is_trivially_copy_constructible +// XFAIL: gcc-4.9 + #include <type_traits> #include "test_macros.h" diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_assignable.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_assignable.pass.cpp index b599ae56f07..0a91efdf089 100644 --- a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_assignable.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_assignable.pass.cpp @@ -10,6 +10,8 @@ // is_trivially_move_assignable +// XFAIL: gcc-4.9 + #include <type_traits> #include "test_macros.h" diff --git a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp index 3503648ddea..78c10a1320a 100644 --- a/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_trivially_move_constructible.pass.cpp @@ -10,6 +10,8 @@ // is_trivially_move_constructible +// XFAIL: gcc-4.9 + #include <type_traits> #include "test_macros.h" diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.fail.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.fail.cpp deleted file mode 100644 index abb8073a6a5..00000000000 --- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.fail.cpp +++ /dev/null @@ -1,33 +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 - -// <tuple> - -// template <class... Types> class tuple; - -// template <class Alloc> -// explicit(see-below) tuple(allocator_arg_t, const Alloc& a); - -// Make sure we get the explicit-ness of the constructor right. -// This is LWG 3158. - -#include <tuple> -#include <memory> - - -struct ExplicitDefault { explicit ExplicitDefault() { } }; - -std::tuple<ExplicitDefault> explicit_default_test() { - return {std::allocator_arg, std::allocator<int>()}; // expected-error {{chosen constructor is explicit in copy-initialization}} -} - -int main(int, char**) { - return 0; -} diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.pass.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.pass.cpp index 13511fa5148..b0f957e3a37 100644 --- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.pass.cpp +++ b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/alloc.pass.cpp @@ -13,7 +13,7 @@ // template <class... Types> class tuple; // template <class Alloc> -// explicit(see-below) tuple(allocator_arg_t, const Alloc& a); +// tuple(allocator_arg_t, const Alloc& a); // NOTE: this constructor does not currently support tags derived from // allocator_arg_t because libc++ has to deduce the parameter as a template diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.fail.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.fail.cpp deleted file mode 100644 index 616550f60e5..00000000000 --- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.fail.cpp +++ /dev/null @@ -1,53 +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 - -// <tuple> - -// template <class... Types> class tuple; - -// explicit(see-below) constexpr tuple(); - -#include <tuple> - - -struct Implicit { - Implicit() = default; -}; - -struct Explicit { - explicit Explicit() = default; -}; - -std::tuple<> test1() { return {}; } - -std::tuple<Implicit> test2() { return {}; } -std::tuple<Explicit> test3() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} - -std::tuple<Implicit, Implicit> test4() { return {}; } -std::tuple<Explicit, Implicit> test5() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::tuple<Implicit, Explicit> test6() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::tuple<Explicit, Explicit> test7() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} - -std::tuple<Implicit, Implicit, Implicit> test8() { return {}; } -std::tuple<Implicit, Implicit, Explicit> test9() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::tuple<Implicit, Explicit, Implicit> test10() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::tuple<Implicit, Explicit, Explicit> test11() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::tuple<Explicit, Implicit, Implicit> test12() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::tuple<Explicit, Implicit, Explicit> test13() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::tuple<Explicit, Explicit, Implicit> test14() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} -std::tuple<Explicit, Explicit, Explicit> test15() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}} - -int main(int, char**) { - return 0; -} diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp index 9f855986257..46fd35ad4dd 100644 --- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp +++ b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.cnstr/default.pass.cpp @@ -10,7 +10,7 @@ // template <class... Types> class tuple; -// explicit(see-below) constexpr tuple(); +// constexpr tuple(); // UNSUPPORTED: c++98, c++03 diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.pass.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.pass.cpp index 3062bc7d107..f83ce7f13e7 100644 --- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.pass.cpp +++ b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.pass.cpp @@ -14,6 +14,7 @@ // struct tuple_size<tuple<Types...>> // : public integral_constant<size_t, sizeof...(Types)> { }; +// XFAIL: gcc-4.9 // UNSUPPORTED: c++98, c++03 #include <tuple> diff --git a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_value_sfinae.pass.cpp b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_value_sfinae.pass.cpp index 62e584d3f0a..aad003039ec 100644 --- a/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_value_sfinae.pass.cpp +++ b/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_value_sfinae.pass.cpp @@ -14,6 +14,7 @@ // class tuple_size<tuple<Types...>> // : public integral_constant<size_t, sizeof...(Types)> { }; +// XFAIL: gcc-4.9 // UNSUPPORTED: c++98, c++03 #include <tuple> 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> |