[Bug c++/85254] boost::is_final does not work for template types

2019-10-26 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85254

--- Comment #8 from ville at gcc dot gnu.org ---
Author: ville
Date: Sat Oct 26 17:32:24 2019
New Revision: 277474

URL: https://gcc.gnu.org/viewcvs?rev=277474=gcc=rev
Log:
PR c++/85254

Backport from mainline
2019-06-01  Ville Voutilainen  

PR c++/85254
* class.c (fixup_type_variants): Handle CLASSTYPE_FINAL.

Modified:
branches/gcc-9-branch/gcc/cp/ChangeLog
branches/gcc-9-branch/gcc/cp/class.c
branches/gcc-9-branch/gcc/testsuite/g++.dg/ext/is_final.C

[Bug c++/85254] boost::is_final does not work for template types

2019-06-01 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85254

--- Comment #6 from ville at gcc dot gnu.org ---
Author: ville
Date: Sat Jun  1 10:57:12 2019
New Revision: 271835

URL: https://gcc.gnu.org/viewcvs?rev=271835=gcc=rev
Log:
PR c++/85254

gcc/cp

PR c++/85254
* class.c (fixup_type_variants): Handle CLASSTYPE_FINAL.

testsuite/

PR c++/85254
* g++.dg/ext/is_final.C: Amend.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/class.c
trunk/gcc/testsuite/g++.dg/ext/is_final.C

[Bug libstdc++/89825] Jump table for variant visitation could be shortened for never empty variants

2019-03-26 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89825

--- Comment #5 from ville at gcc dot gnu.org ---
Author: ville
Date: Tue Mar 26 15:00:05 2019
New Revision: 269947

URL: https://gcc.gnu.org/viewcvs?rev=269947=gcc=rev
Log:
PR libstdc++/89825

Fix based on a suggestion by Antony Polukhin.
* include/std/variant (_Extra_visit_slot_needed): New.
(_Multi_array): Use it.
(_S_apply_all_alts): Likewise.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/variant

[Bug libstdc++/89824] Variant jump table reserves space for __variant_cookie twice

2019-03-26 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89824

--- Comment #1 from ville at gcc dot gnu.org ---
Author: ville
Date: Tue Mar 26 12:41:59 2019
New Revision: 269941

URL: https://gcc.gnu.org/viewcvs?rev=269941=gcc=rev
Log:
PR libstdc++/89824

Fix based on a suggestion by Antony Polukhin.
* include/std/variant (__gen_vtable): Don't reserve an
additional table slot, _Multi_array already does that.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/variant

[Bug libstdc++/89816] [9 Regression] std::variant move construction regressed since GCC 8.3

2019-03-26 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89816

--- Comment #11 from ville at gcc dot gnu.org ---
Author: ville
Date: Tue Mar 26 12:07:26 2019
New Revision: 269940

URL: https://gcc.gnu.org/viewcvs?rev=269940=gcc=rev
Log:
PR libstdc++/89816

Fix based on a suggestion by Antony Polukhin.
* include/std/variant (__variant_construct): Capture a pointer
to the storage and visit just one variant.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/variant

[Bug libstdc++/85517] std::variant exception safety problems

2019-03-06 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85517

--- Comment #4 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Mar  6 12:56:05 2019
New Revision: 269422

URL: https://gcc.gnu.org/viewcvs?rev=269422=gcc=rev
Log:
Rewrite variant, also PR libstdc++/85517

* include/std/variant (__do_visit): New.
(__variant_cast): Likewise.
(__variant_cookie): Likewise.
(__erased_*): Remove.
(_Variant_storage::_S_vtable): Likewise.
(_Variant_storage::__M_reset_impl): Adjust to use __do_visit.
(_Variant_storage::__M_reset): Adjust.
(__variant_construct): New.
(_Copy_ctor_base(const _Copy_ctor_base&)): Adjust to use
__variant_construct.
(_Move_ctor_base(_Move_ctor_base&&)): Likewise.
(_Move_ctor_base::__M_destructive_copy): New.
(_Move_ctor_base::__M_destructive_move): Adjust to use
__variant_construct.
(_Copy_assign_base::operator=): Adjust to use __do_visit.
(_Copy_assign_alias): Adjust to check both copy assignment
and copy construction for triviality.
(_Move_assign_base::operator=): Adjust to use __do_visit.
(_Multi_array): Add support for visitors that accept and return
a __variant_cookie.
(__gen_vtable_impl::_S_apply_all_alts): Likewise.
(__gen_vtable_impl::_S_apply_single_alt): Likewise.
(__gen_vtable_impl::__element_by_index_or_cookie): New. Generate
a __variant_cookie temporary for a variant that is valueless and..
(__gen_vtable_impl::__visit_invoke): ..adjust here.
(__gen_vtable::_Array_type): Conditionally make space for
the __variant_cookie visitor case.
(__variant_construct_by_index): New.
(get_if): Adjust to use std::addressof.
(relops): Adjust to use __do_visit.
(variant): Add __variant_cast and __variant_construct_by_index
as friends.
(variant::emplace): Use _M_reset() and __variant_construct_by_index
instead of self-destruction.
(variant::swap): Adjust to use __do_visit.
(visit): Reimplement in terms of __do_visit.
(__variant_hash_call_base_impl::operator()): Adjust to use __do_visit.
* testsuite/20_util/variant/compile.cc: Adjust.
* testsuite/20_util/variant/run.cc: Likewise.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/variant
trunk/libstdc++-v3/testsuite/20_util/variant/compile.cc
trunk/libstdc++-v3/testsuite/20_util/variant/run.cc

[Bug libstdc++/87855] std::optional only copy-constructible if T is trivially copy-constructible

2018-11-19 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87855

--- Comment #17 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Nov 19 15:05:18 2018
New Revision: 266278

URL: https://gcc.gnu.org/viewcvs?rev=266278=gcc=rev
Log:
PR libstdc++/87855

Also implement P0602R4 (variant and optional
should propagate copy/move triviality) for std::optional.
* include/std/optional (_Optional_payload): Change
the main constraints to check constructibility in
addition to assignability.
(operator=): Make constexpr.
(_M_reset): Likewise.
(_M_construct): Likewise.
(operator->): Likewise.
* testsuite/20_util/optional/assignment/8.cc: Adjust.
* testsuite/20_util/optional/assignment/9.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/optional/assignment/9.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/optional
trunk/libstdc++-v3/testsuite/20_util/optional/assignment/8.cc

[Bug libstdc++/87619] sizeof(std::variant) can be reduced if its variant_size is UCHAR_MAX

2018-10-17 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87619

--- Comment #1 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Oct 17 19:08:51 2018
New Revision: 265247

URL: https://gcc.gnu.org/viewcvs?rev=265247=gcc=rev
Log:
PR libstdc++/87619

* include/std/variant (__select_index): Fix an off-by-one.
* testsuite/20_util/variant/87619.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/variant/87619.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/variant

[Bug c++/87093] is_constructible (__is_constructible() instrinsic) explicitly instantiates conversion member function of source

2018-09-12 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87093

--- Comment #6 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Sep 12 21:43:49 2018
New Revision: 264254

URL: https://gcc.gnu.org/viewcvs?rev=264254=gcc=rev
Log:
PR c++/87093

Backport from mainline
2018-09-13  Ville Voutilainen  

gcc/cp

PR c++/87093
* method.c (constructible_expr): We're in an unevaluated context
in all cases, not just for class targets.

testsuite/

PR c++/87093
* g++.dg/ext/is_constructible2.C: New.

Added:
branches/gcc-8-branch/gcc/testsuite/g++.dg/ext/is_constructible2.C
Modified:
branches/gcc-8-branch/gcc/cp/ChangeLog
branches/gcc-8-branch/gcc/cp/method.c

[Bug c++/87093] is_constructible (__is_constructible() instrinsic) explicitly instantiates conversion member function of source

2018-09-12 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87093

--- Comment #5 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Sep 12 21:10:43 2018
New Revision: 264253

URL: https://gcc.gnu.org/viewcvs?rev=264253=gcc=rev
Log:
PR c++/87093

gcc/cp

PR c++/87093
* method.c (constructible_expr): We're in an unevaluated context
in all cases, not just for class targets.

testsuite/

PR c++/87093
* g++.dg/ext/is_constructible2.C: New.

Added:
trunk/gcc/testsuite/g++.dg/ext/is_constructible2.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/method.c

[Bug c++/79133] lambda capture shadowing parameter & decltype confusion

2018-08-07 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79133

--- Comment #6 from ville at gcc dot gnu.org ---
Author: ville
Date: Tue Aug  7 13:46:16 2018
New Revision: 263357

URL: https://gcc.gnu.org/viewcvs?rev=263357=gcc=rev
Log:
PR c++/79133

gcc/cp/

PR c++/79133
* name-lookup.c (check_local_shadow): Reject captures and parameters
with the same name.

testsuite/

PR c++/79133
* g++.dg/cpp0x/lambda/lambda-shadow3.C: New.
* g++.dg/cpp1y/lambda-generic-variadic18.C: Likewise.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-shadow3.C
trunk/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic18.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/name-lookup.c

[Bug c++/86398] is_trivially_constructible always returns true even when is_constructible returns false

2018-07-04 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86398

--- Comment #7 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Jul  4 20:56:12 2018
New Revision: 262424

URL: https://gcc.gnu.org/viewcvs?rev=262424=gcc=rev
Log:
Backport from mainline

2018-07-04  Ville Voutilainen  

gcc/cp/

PR c++/86398
* method.c (is_trivially_xible): Return false
if is_xible_helper returns a NULL_TREE.

testsuite/

PR c++/86398
* g++.dg/ext/is_trivially_constructible1.C: Add new tests.

Modified:
branches/gcc-8-branch/gcc/cp/ChangeLog
branches/gcc-8-branch/gcc/cp/method.c
   
branches/gcc-8-branch/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C

[Bug c++/86398] is_trivially_constructible always returns true even when is_constructible returns false

2018-07-04 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86398

--- Comment #6 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Jul  4 19:21:38 2018
New Revision: 262420

URL: https://gcc.gnu.org/viewcvs?rev=262420=gcc=rev
Log:
PR c++/86398

gcc/cp/

PR c++/86398
* method.c (is_trivially_xible): Return false
if is_xible_helper returns a NULL_TREE.

testsuite/

PR c++/86398
* g++.dg/ext/is_trivially_constructible1.C: Add new tests.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/method.c
trunk/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C

[Bug libstdc++/80165] Constexpr tuple of variant doesn't work

2018-05-13 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80165

--- Comment #8 from ville at gcc dot gnu.org ---
Author: ville
Date: Sun May 13 10:36:12 2018
New Revision: 260209

URL: https://gcc.gnu.org/viewcvs?rev=260209=gcc=rev
Log:
PR libstdc++/80165
* testsuite/20_util/variant/80165.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/variant/80165.cc
Modified:
trunk/libstdc++-v3/ChangeLog

[Bug c++/65923] False positive for warning about literal operator suffix and using

2018-04-04 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65923

--- Comment #7 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Apr  4 16:05:11 2018
New Revision: 259087

URL: https://gcc.gnu.org/viewcvs?rev=259087=gcc=rev
Log:
PR c++/65923

gcc/cp

PR c++/65923
* decl.c (grokfndecl): Handle standard UDL diagnostics here..
* parser.c (cp_parser_unqualified_id): ..not here.

testsuite/

PR c++/65923
* g++.dg/diagnostic/pr65923.C: New.

Added:
trunk/gcc/testsuite/g++.dg/diagnostic/pr65923.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c
trunk/gcc/cp/parser.c

[Bug libstdc++/84601] [8 Regression] std::optional<std::pair<int, int>> is not assignment copyable

2018-03-06 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84601

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Tue Mar  6 21:43:03 2018
New Revision: 258304

URL: https://gcc.gnu.org/viewcvs?rev=258304=gcc=rev
Log:
PR libstdc++/84601
* include/std/optional (_Optional_payload): Split into multiple
specializations that can handle different cases of trivial or
non-trivial assignment operators.
* testsuite/20_util/optional/84601.cc: New.
* testsuite/20_util/optional/cons/value_neg.cc: Adjust.

Added:
trunk/libstdc++-v3/testsuite/20_util/optional/84601.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/optional
trunk/libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc

[Bug c++/83895] [8 Regression] -Wparentheses warns about pointer-to-member typedefs

2018-01-22 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83895

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Jan 22 12:44:33 2018
New Revision: 256942

URL: https://gcc.gnu.org/viewcvs?rev=256942=gcc=rev
Log:
PR c++/83895

cp/

* decl.c (grokdeclarator): Don't diagnose extra parens
on typedefs.

testsuite/

* g++.dg/warn/83895.C: New.

Added:
trunk/gcc/testsuite/g++.dg/warn/83895.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c

[Bug libstdc++/68430] std::is_constructible::value == true for unconstructible type T

2017-12-18 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68430

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Dec 18 18:46:30 2017
New Revision: 255785

URL: https://gcc.gnu.org/viewcvs?rev=255785=gcc=rev
Log:
PR libstdc++/68430

* testsuite/20_util/is_constructible/68430.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/is_constructible/68430.cc
Modified:
trunk/libstdc++-v3/ChangeLog

[Bug libstdc++/80675] Incorrect implementation of LWG 2534

2017-06-21 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80675

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Jun 21 21:09:46 2017
New Revision: 249471

URL: https://gcc.gnu.org/viewcvs?rev=249471=gcc=rev
Log:
PR libstdc++/80675, PR libstdc++/80940

Backport from mainline
2017-06-21  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/80675
PR libstdc++/80940
* include/std/istream:
(__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream): Use the new base.
(__rvalue_istream_type): New.
(operator>>(_Istream&&, _Tp&&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual extraction.
* include/std/ostream:
(__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream): Use the new base.
(__rvalue_ostream_type): New.
(operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual insertion.
* testsuite/27_io/rvalue_streams-2.cc: Add new tests.

Modified:
branches/gcc-7-branch/libstdc++-v3/ChangeLog
branches/gcc-7-branch/libstdc++-v3/include/std/istream
branches/gcc-7-branch/libstdc++-v3/include/std/ostream
branches/gcc-7-branch/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc

[Bug libstdc++/80940] [7/8 Regression] Private inheritance from std::ostream - compilation error for custom operator <

2017-06-21 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80940

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Jun 21 21:09:46 2017
New Revision: 249471

URL: https://gcc.gnu.org/viewcvs?rev=249471=gcc=rev
Log:
PR libstdc++/80675, PR libstdc++/80940

Backport from mainline
2017-06-21  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/80675
PR libstdc++/80940
* include/std/istream:
(__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream): Use the new base.
(__rvalue_istream_type): New.
(operator>>(_Istream&&, _Tp&&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual extraction.
* include/std/ostream:
(__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream): Use the new base.
(__rvalue_ostream_type): New.
(operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual insertion.
* testsuite/27_io/rvalue_streams-2.cc: Add new tests.

Modified:
branches/gcc-7-branch/libstdc++-v3/ChangeLog
branches/gcc-7-branch/libstdc++-v3/include/std/istream
branches/gcc-7-branch/libstdc++-v3/include/std/ostream
branches/gcc-7-branch/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc

[Bug libstdc++/80940] [7/8 Regression] Private inheritance from std::ostream - compilation error for custom operator <

2017-06-21 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80940

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Jun 21 19:53:26 2017
New Revision: 249468

URL: https://gcc.gnu.org/viewcvs?rev=249468=gcc=rev
Log:
PR libstdc++/80675, PR libstdc++/80940

* include/std/istream:
(__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream): Use the new base.
(__rvalue_istream_type): New.
(operator>>(_Istream&&, _Tp&&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual extraction.
* include/std/ostream:
(__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream): Use the new base.
(__rvalue_ostream_type): New.
(operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual insertion.
* testsuite/27_io/rvalue_streams-2.cc: Add new tests.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/istream
trunk/libstdc++-v3/include/std/ostream
trunk/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc

[Bug libstdc++/80675] Incorrect implementation of LWG 2534

2017-06-21 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80675

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Jun 21 19:53:26 2017
New Revision: 249468

URL: https://gcc.gnu.org/viewcvs?rev=249468=gcc=rev
Log:
PR libstdc++/80675, PR libstdc++/80940

* include/std/istream:
(__is_convertible_to_basic_istream_test(basic_istream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream_impl): Likewise.
(__is_convertible_to_basic_istream): Use the new base.
(__rvalue_istream_type): New.
(operator>>(_Istream&&, _Tp&&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual extraction.
* include/std/ostream:
(__is_convertible_to_basic_ostream_test(basic_ostream<_Ch, _Up>*)): New.
(__do_is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream_impl): Likewise.
(__is_convertible_to_basic_ostream): Use the new base.
(__rvalue_ostream_type): New.
(operator<<(_Ostream&&, const _Tp&)): Use the new helper alias
for the SFINAE check, convert to the helper alias type before
doing the actual insertion.
* testsuite/27_io/rvalue_streams-2.cc: Add new tests.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/istream
trunk/libstdc++-v3/include/std/ostream
trunk/libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc

[Bug c++/80812] [8 Regression] ICE: in build_value_init_noctor, at cp/init.c:483

2017-06-01 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80812

--- Comment #4 from ville at gcc dot gnu.org ---
Author: ville
Date: Thu Jun  1 11:09:41 2017
New Revision: 248788

URL: https://gcc.gnu.org/viewcvs?rev=248788=gcc=rev
Log:
PR c++/80812

cp/

PR c++/80812
* method.c (constructible_expr): Strip array types before calling
build_value_init.

libstdc++/

PR c++/80812
* testsuite/20_util/is_constructible/80812.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/is_constructible/80812.cc
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/method.c

[Bug c++/80682] __is_trivially_constructible(void, int) returns true.

2017-05-17 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80682

--- Comment #6 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed May 17 13:54:23 2017
New Revision: 248153

URL: https://gcc.gnu.org/viewcvs?rev=248153=gcc=rev
Log:
Implement new C++ intrinsics __is_assignable and __is_constructible.

c-family/

Implement new C++ intrinsics __is_assignable and __is_constructible.
* c-common.c (__is_assignable, __is_constructible): New.
* c-common.h (RID_IS_ASSIGNABLE, RID_IS_CONSTRUCTIBLE): Likewise.

cp/

PR c++/80654
PR c++/80682
Implement new C++ intrinsics __is_assignable and __is_constructible.
* cp-tree.h (CPTK_IS_ASSIGNABLE, CPTK_IS_CONSTRUCTIBLE): New.
(is_xible): New.
* cxx-pretty-print.c (pp_cxx_trait_expression): Handle
CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE.
* method.c (constructible_expr): Set cp_unevaluated.
(is_xible_helper): New.
(is_trivially_xible): Adjust.
(is_xible): New.
* parser.c (cp_parser_primary_expression): Handle
RID_IS_ASSIGNABLE and RID_IS_CONSTRUCTIBLE.
(cp_parser_trait_expr): Likewise.
* semantics.c (trait_expr_value): Handle
CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE.

testsuite/

* g++.dg/ext/80654.C: New.

libstdc++-v3/

Implement new C++ intrinsics __is_assignable and __is_constructible.
* include/std/type_traits (__do_is_static_castable_impl): Remove.
(__is_static_castable_impl, __is_static_castable_safe): Likewise.
(__is_static_castable, __do_is_direct_constructible_impl): Likewise.
(__is_direct_constructible_impl): Likewise.
(__is_direct_constructible_new_safe): Likewise.
(__is_base_to_derived_ref, __is_lvalue_to_rvalue_ref): Likewise.
(__is_direct_constructible_ref_cast): Likewise.
(__is_direct_constructible_new, __is_direct_constructible): Likewise.
(__do_is_nary_constructible_impl): Likewise.
(__is_nary_constructible_impl, __is_nary_constructible): Likewise.
(__is_constructible_impl): Likewise.
(is_constructible): Call the intrinsic.
(__is_assignable_helper): Remove.
(is_assignable): Call the intrinsic.
(is_trivially_constructible): Likewise.
(__is_trivially_copy_constructible_impl): New.
(is_trivially_copy_constructible): Use it.
(__is_trivially_move_constructible_impl): New.
(is_trivially_move_constructible): Use it.
(is_trivially_assignable): Call the intrinsic.
(__is_trivially_copy_assignable_impl): New.
(is_trivially_copy_assignable): Use it.
(__is_trivially_move_assignable_impl): New.
(is_trivially_move_assignable): Use it.
(testsuite/20_util/declval/requirements/1_neg.cc): Adjust.
(testsuite/20_util/is_trivially_copy_assignable/value.cc):
Add test for void.
(testsuite/20_util/is_trivially_copy_constructible/value.cc): Likewise.
(testsuite/20_util/is_trivially_move_assignable/value.cc): Likewise.
(testsuite/20_util/is_trivially_move_constructible/value.cc): Likewise.
(testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Adjust.
(testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc):
Likewise.

Added:
trunk/gcc/testsuite/g++.dg/ext/80654.C
Modified:
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c-common.c
trunk/gcc/c-family/c-common.h
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/cxx-pretty-print.c
trunk/gcc/cp/method.c
trunk/gcc/cp/parser.c
trunk/gcc/cp/semantics.c
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/type_traits
trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
trunk/libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
   
trunk/libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc
trunk/libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc
   
trunk/libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc
   
trunk/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
   
trunk/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc

[Bug libstdc++/80654] is_trivially_copy_constructible fails with compiler error with vector of uncopyable objects

2017-05-17 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80654

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed May 17 13:54:23 2017
New Revision: 248153

URL: https://gcc.gnu.org/viewcvs?rev=248153=gcc=rev
Log:
Implement new C++ intrinsics __is_assignable and __is_constructible.

c-family/

Implement new C++ intrinsics __is_assignable and __is_constructible.
* c-common.c (__is_assignable, __is_constructible): New.
* c-common.h (RID_IS_ASSIGNABLE, RID_IS_CONSTRUCTIBLE): Likewise.

cp/

PR c++/80654
PR c++/80682
Implement new C++ intrinsics __is_assignable and __is_constructible.
* cp-tree.h (CPTK_IS_ASSIGNABLE, CPTK_IS_CONSTRUCTIBLE): New.
(is_xible): New.
* cxx-pretty-print.c (pp_cxx_trait_expression): Handle
CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE.
* method.c (constructible_expr): Set cp_unevaluated.
(is_xible_helper): New.
(is_trivially_xible): Adjust.
(is_xible): New.
* parser.c (cp_parser_primary_expression): Handle
RID_IS_ASSIGNABLE and RID_IS_CONSTRUCTIBLE.
(cp_parser_trait_expr): Likewise.
* semantics.c (trait_expr_value): Handle
CPTK_IS_ASSIGNABLE and CPTK_IS_CONSTRUCTIBLE.

testsuite/

* g++.dg/ext/80654.C: New.

libstdc++-v3/

Implement new C++ intrinsics __is_assignable and __is_constructible.
* include/std/type_traits (__do_is_static_castable_impl): Remove.
(__is_static_castable_impl, __is_static_castable_safe): Likewise.
(__is_static_castable, __do_is_direct_constructible_impl): Likewise.
(__is_direct_constructible_impl): Likewise.
(__is_direct_constructible_new_safe): Likewise.
(__is_base_to_derived_ref, __is_lvalue_to_rvalue_ref): Likewise.
(__is_direct_constructible_ref_cast): Likewise.
(__is_direct_constructible_new, __is_direct_constructible): Likewise.
(__do_is_nary_constructible_impl): Likewise.
(__is_nary_constructible_impl, __is_nary_constructible): Likewise.
(__is_constructible_impl): Likewise.
(is_constructible): Call the intrinsic.
(__is_assignable_helper): Remove.
(is_assignable): Call the intrinsic.
(is_trivially_constructible): Likewise.
(__is_trivially_copy_constructible_impl): New.
(is_trivially_copy_constructible): Use it.
(__is_trivially_move_constructible_impl): New.
(is_trivially_move_constructible): Use it.
(is_trivially_assignable): Call the intrinsic.
(__is_trivially_copy_assignable_impl): New.
(is_trivially_copy_assignable): Use it.
(__is_trivially_move_assignable_impl): New.
(is_trivially_move_assignable): Use it.
(testsuite/20_util/declval/requirements/1_neg.cc): Adjust.
(testsuite/20_util/is_trivially_copy_assignable/value.cc):
Add test for void.
(testsuite/20_util/is_trivially_copy_constructible/value.cc): Likewise.
(testsuite/20_util/is_trivially_move_assignable/value.cc): Likewise.
(testsuite/20_util/is_trivially_move_constructible/value.cc): Likewise.
(testsuite/20_util/make_signed/requirements/typedefs_neg.cc): Adjust.
(testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc):
Likewise.

Added:
trunk/gcc/testsuite/g++.dg/ext/80654.C
Modified:
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c-common.c
trunk/gcc/c-family/c-common.h
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/cxx-pretty-print.c
trunk/gcc/cp/method.c
trunk/gcc/cp/parser.c
trunk/gcc/cp/semantics.c
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/type_traits
trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
trunk/libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
   
trunk/libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc
trunk/libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc
   
trunk/libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc
   
trunk/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
   
trunk/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc

[Bug c++/80682] __is_trivially_constructible(void, int) returns true.

2017-05-11 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80682

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Thu May 11 07:44:29 2017
New Revision: 247880

URL: https://gcc.gnu.org/viewcvs?rev=247880=gcc=rev
Log:
PR c++/80682

cp/

PR c++/80682
* method.c (is_trivially_xible): Reject void types.

testsuite/

PR c++/80682
* g++.dg/ext/is_trivially_constructible1.C: Add tests for void target.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/method.c
trunk/gcc/testsuite/g++.dg/ext/is_trivially_constructible1.C

[Bug libstdc++/79141] [6/7 Regression] std::pair<int,int> p = {}; fails to compile due to ambiguous overload

2017-04-03 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79141

--- Comment #5 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Apr  3 21:20:23 2017
New Revision: 246663

URL: https://gcc.gnu.org/viewcvs?rev=246663=gcc=rev
Log:
PR libstdc++/79141

Backport from mainline
2017-04-03  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/79141
* include/bits/stl_pair.h (__nonesuch_no_braces): New.
(operator=(typename conditional<
__and_<is_copy_assignable<_T1>,
is_copy_assignable<_T2>>::value,
const pair&, const __nonesuch&>::type)): Change __nonesuch
to __nonesuch_no_braces.
(operator=(typename conditional<
__not_<__and_<is_copy_assignable<_T1>,
is_copy_assignable<_T2>>>::value,
const pair&, const __nonesuch&>::type)): Likewise.
(operator=(typename conditional<
__and_<is_move_assignable<_T1>,
is_move_assignable<_T2>>::value,
pair&&, __nonesuch&&>::type)): Likewise.
* testsuite/20_util/pair/79141.cc: New.

Added:
branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/pair/79141.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/bits/stl_pair.h

[Bug libstdc++/79141] [6/7 Regression] std::pair<int,int> p = {}; fails to compile due to ambiguous overload

2017-04-03 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79141

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Apr  3 16:30:58 2017
New Revision: 246653

URL: https://gcc.gnu.org/viewcvs?rev=246653=gcc=rev
Log:
PR libstdc++/79141
* include/bits/stl_pair.h (__nonesuch_no_braces): New.
(operator=(typename conditional<
__and_<is_copy_assignable<_T1>,
is_copy_assignable<_T2>>::value,
const pair&, const __nonesuch&>::type)): Change __nonesuch
to __nonesuch_no_braces.
(operator=(typename conditional<
__not_<__and_<is_copy_assignable<_T1>,
is_copy_assignable<_T2>>>::value,
const pair&, const __nonesuch&>::type)): Likewise.
(operator=(typename conditional<
__and_<is_move_assignable<_T1>,
is_move_assignable<_T2>>::value,
pair&&, __nonesuch&&>::type)): Likewise.
* testsuite/20_util/pair/79141.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/pair/79141.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/stl_pair.h

[Bug c++/35878] [LWG 2302] Useless NULL pointer check when constructing object

2017-03-21 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35878

--- Comment #10 from ville at gcc dot gnu.org ---
Author: ville
Date: Tue Mar 21 06:36:22 2017
New Revision: 246301

URL: https://gcc.gnu.org/viewcvs?rev=246301=gcc=rev
Log:
gcc/

PR c++/35878
* cp/init.c (std_placement_new_fn_p): New.
(build_new_1): Call it.

testsuite/

PR c++/35878
* g++.dg/init/pr35878_1.C: New.
* g++.dg/init/pr35878_2.C: Likewise.
* g++.dg/init/pr35878_3.C: Likewise.

Added:
trunk/gcc/testsuite/g++.dg/init/pr35878_1.C
trunk/gcc/testsuite/g++.dg/init/pr35878_2.C
trunk/gcc/testsuite/g++.dg/init/pr35878_3.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/init.c

[Bug libstdc++/80034] [5/6 Regression] unqualified calls to std::distance in std::list::sort

2017-03-13 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80034

--- Comment #4 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Mar 13 19:44:42 2017
New Revision: 246109

URL: https://gcc.gnu.org/viewcvs?rev=246109=gcc=rev
Log:
PR libstdc++/80034
* include/bits/list.tcc (merge(list&&)): Use const for the size_t
in the function and in the catch-block, qualify uses of std::distance.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/80034.cc: New.

Added:
   
branches/gcc-5-branch/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
Modified:
branches/gcc-5-branch/libstdc++-v3/ChangeLog
branches/gcc-5-branch/libstdc++-v3/include/bits/list.tcc

[Bug libstdc++/80034] [5/6 Regression] unqualified calls to std::distance in std::list::sort

2017-03-13 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80034

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Mar 13 19:43:27 2017
New Revision: 246108

URL: https://gcc.gnu.org/viewcvs?rev=246108=gcc=rev
Log:
PR libstdc++/80034
* include/bits/list.tcc (merge(list&&)): Use const for the size_t
in the function and in the catch-block, qualify uses of std::distance.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/80034.cc: New.

Added:
   
branches/gcc-6-branch/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/bits/list.tcc

[Bug libstdc++/80034] [5/6 Regression] unqualified calls to std::distance in std::list::sort

2017-03-13 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80034

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Mar 13 19:41:50 2017
New Revision: 246107

URL: https://gcc.gnu.org/viewcvs?rev=246107=gcc=rev
Log:
PR libstdc++/80034
* include/bits/list.tcc (merge(list&&)): Use const for the size_t
in the catch-block.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/80034.cc: New.

Added:
trunk/libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/list.tcc

[Bug libstdc++/78389] list::merge and list::sort are not exception safe

2017-01-16 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389

--- Comment #8 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Jan 16 13:32:39 2017
New Revision: 244493

URL: https://gcc.gnu.org/viewcvs?rev=244493=gcc=rev
Log:
PR libstdc++/78389 fix backwards size adjustments

Backport from mainline
2017-01-16  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/78389
* include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/78389.cc: Add
better test for the sizes.

Modified:
branches/gcc-5-branch/libstdc++-v3/ChangeLog
branches/gcc-5-branch/libstdc++-v3/include/bits/list.tcc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc

[Bug libstdc++/78389] list::merge and list::sort are not exception safe

2017-01-16 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389

--- Comment #7 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Jan 16 13:30:58 2017
New Revision: 244492

URL: https://gcc.gnu.org/viewcvs?rev=244492=gcc=rev
Log:
PR libstdc++/78389 fix backwards size adjustments

Backport from mainline
2017-01-16  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/78389
* include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/78389.cc: Add
better test for the sizes.

Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/bits/list.tcc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc

[Bug libstdc++/78389] list::merge and list::sort are not exception safe

2017-01-16 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389

--- Comment #6 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Jan 16 11:36:33 2017
New Revision: 244490

URL: https://gcc.gnu.org/viewcvs?rev=244490=gcc=rev
Log:
PR libstdc++/78389 fix backwards size adjustments.

PR libstdc++/78389
* include/bits/list.tcc (merge(list&&)): Fix backwards size adjustments.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/78389.cc: Add
better test for the sizes.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/list.tcc
trunk/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc

[Bug libstdc++/78389] list::merge and list::sort are not exception safe

2017-01-15 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389

--- Comment #4 from ville at gcc dot gnu.org ---
Author: ville
Date: Sun Jan 15 16:27:08 2017
New Revision: 244475

URL: https://gcc.gnu.org/viewcvs?rev=244475=gcc=rev
Log:
Backport from mainline
2017-01-13  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/78389
* include/bits/list.tcc (merge(list&&)):
Adjust list sizes if the comparator throws.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/78389.cc: New.

Added:
   
branches/gcc-5-branch/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
Modified:
branches/gcc-5-branch/libstdc++-v3/ChangeLog
branches/gcc-5-branch/libstdc++-v3/include/bits/list.tcc

[Bug libstdc++/78389] list::merge and list::sort are not exception safe

2017-01-15 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Sun Jan 15 16:11:46 2017
New Revision: 244474

URL: https://gcc.gnu.org/viewcvs?rev=244474=gcc=rev
Log:
Backport from mainline
2017-01-13  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/78389
* include/bits/list.tcc (merge(list&&)):
Adjust list sizes if the comparator throws.
(merge(list&&, _StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/78389.cc: New.

Added:
   
branches/gcc-6-branch/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/bits/list.tcc

[Bug libstdc++/78389] list::merge and list::sort are not exception safe

2017-01-13 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78389

--- Comment #1 from ville at gcc dot gnu.org ---
Author: ville
Date: Fri Jan 13 14:46:25 2017
New Revision: 244439

URL: https://gcc.gnu.org/viewcvs?rev=244439=gcc=rev
Log:
PR libstdc++/78389
* include/bits/list.tcc (merge(list&&)):
Adjust list sizes if the comparator throws.
(merge(list&&, _StrictWeakOrdering)): Likewise.
(sort()): Splice elements back from the scratch buffers
if the comparator throws.
(sort(_StrictWeakOrdering)): Likewise.
* testsuite/23_containers/list/operations/78389.cc: New.

Added:
trunk/libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/list.tcc

[Bug libstdc++/77727] Unwrapping std::optional constructor is not working for non-transferable object

2016-10-24 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77727

--- Comment #6 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Oct 24 12:52:31 2016
New Revision: 241477

URL: https://gcc.gnu.org/viewcvs?rev=241477=gcc=rev
Log:
Backport from mainline:

2016-10-24  Ville Voutilainen  <ville.voutilai...@gmail.com>

Cross-port the latest resolution of LWG2756 and some
bug-fixes to experimental::optional.
PR libstdc++/77288
PR libstdc++/77727
* include/experimental/optional (_Optional_base):
Remove constructors that take a _Tp.
(__is_optional_impl, __is_optional): Remove.
(__converts_from_optional): New.
(optional(_Up&&)): Fix constraints, call base with in_place.
(optional(const optional<_Up>&)): Fix constraints, use emplace.
(optional(optional<_Up>&&)): Likewise.
(operator=(_Up&&)): Fix constraints.
(operator=(const optional<_Up>&)): Likewise.
(operator=(optional<_Up>&&)): Likewise.
(emplace(_Args&&...)): Constrain.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* testsuite/experimental/optional/77288.cc: New.
* testsuite/experimental/optional/assignment/5.cc: Adjust.
* testsuite/experimental/optional/cons/77727.cc: New.
* testsuite/experimental/optional/cons/value.cc: Adjust.

Added:
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/77288.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
  - copied, changed from r241461,
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/experimental/optional
   
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/cons/value.cc

[Bug libstdc++/77288] Std::experimental::optional::operator= implementation is broken in gcc 6.1

2016-10-24 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77288

--- Comment #12 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Oct 24 12:52:31 2016
New Revision: 241477

URL: https://gcc.gnu.org/viewcvs?rev=241477=gcc=rev
Log:
Backport from mainline:

2016-10-24  Ville Voutilainen  <ville.voutilai...@gmail.com>

Cross-port the latest resolution of LWG2756 and some
bug-fixes to experimental::optional.
PR libstdc++/77288
PR libstdc++/77727
* include/experimental/optional (_Optional_base):
Remove constructors that take a _Tp.
(__is_optional_impl, __is_optional): Remove.
(__converts_from_optional): New.
(optional(_Up&&)): Fix constraints, call base with in_place.
(optional(const optional<_Up>&)): Fix constraints, use emplace.
(optional(optional<_Up>&&)): Likewise.
(operator=(_Up&&)): Fix constraints.
(operator=(const optional<_Up>&)): Likewise.
(operator=(optional<_Up>&&)): Likewise.
(emplace(_Args&&...)): Constrain.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* testsuite/experimental/optional/77288.cc: New.
* testsuite/experimental/optional/assignment/5.cc: Adjust.
* testsuite/experimental/optional/cons/77727.cc: New.
* testsuite/experimental/optional/cons/value.cc: Adjust.

Added:
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/77288.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
  - copied, changed from r241461,
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/experimental/optional
   
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/optional/cons/value.cc

[Bug libstdc++/77288] Std::experimental::optional::operator= implementation is broken in gcc 6.1

2016-10-24 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77288

--- Comment #11 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Oct 24 12:46:44 2016
New Revision: 241476

URL: https://gcc.gnu.org/viewcvs?rev=241476=gcc=rev
Log:
Cross-port the latest resolution of LWG2756 and some
bug-fixes to experimental::optional.
PR libstdc++/77288
PR libstdc++/77727
* include/experimental/optional (_Optional_base):
Remove constructors that take a _Tp.
(__is_optional_impl, __is_optional): Remove.
(__converts_from_optional): New.
(optional(_Up&&)): Fix constraints, call base with in_place.
(optional(const optional<_Up>&)): Fix constraints, use emplace.
(optional(optional<_Up>&&)): Likewise.
(operator=(_Up&&)): Fix constraints.
(operator=(const optional<_Up>&)): Likewise.
(operator=(optional<_Up>&&)): Likewise.
(emplace(_Args&&...)): Constrain.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* testsuite/experimental/optional/77288.cc: New.
* testsuite/experimental/optional/assignment/5.cc: Adjust.
* testsuite/experimental/optional/cons/77727.cc: New.
* testsuite/experimental/optional/cons/value.cc: Adjust.

Added:
trunk/libstdc++-v3/testsuite/experimental/optional/77288.cc
trunk/libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
  - copied, changed from r241475,
trunk/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/experimental/optional
trunk/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
trunk/libstdc++-v3/testsuite/experimental/optional/cons/value.cc

[Bug libstdc++/77727] Unwrapping std::optional constructor is not working for non-transferable object

2016-10-24 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77727

--- Comment #5 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Oct 24 12:46:44 2016
New Revision: 241476

URL: https://gcc.gnu.org/viewcvs?rev=241476=gcc=rev
Log:
Cross-port the latest resolution of LWG2756 and some
bug-fixes to experimental::optional.
PR libstdc++/77288
PR libstdc++/77727
* include/experimental/optional (_Optional_base):
Remove constructors that take a _Tp.
(__is_optional_impl, __is_optional): Remove.
(__converts_from_optional): New.
(optional(_Up&&)): Fix constraints, call base with in_place.
(optional(const optional<_Up>&)): Fix constraints, use emplace.
(optional(optional<_Up>&&)): Likewise.
(operator=(_Up&&)): Fix constraints.
(operator=(const optional<_Up>&)): Likewise.
(operator=(optional<_Up>&&)): Likewise.
(emplace(_Args&&...)): Constrain.
(emplace(initializer_list<_Up>, _Args&&...)): Likewise.
* testsuite/experimental/optional/77288.cc: New.
* testsuite/experimental/optional/assignment/5.cc: Adjust.
* testsuite/experimental/optional/cons/77727.cc: New.
* testsuite/experimental/optional/cons/value.cc: Adjust.

Added:
trunk/libstdc++-v3/testsuite/experimental/optional/77288.cc
trunk/libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
  - copied, changed from r241475,
trunk/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/experimental/optional
trunk/libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
trunk/libstdc++-v3/testsuite/experimental/optional/cons/value.cc

[Bug libstdc++/77802] [7 Regression] Boost Fiber doesn't compile

2016-10-03 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77802

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Oct  3 11:06:53 2016
New Revision: 240709

URL: https://gcc.gnu.org/viewcvs?rev=240709=gcc=rev
Log:
PR libstdc++/77802
* testsuite/20_util/tuple/77802.cc: New.

Revert:
2016-09-21  Ville Voutilainen  <ville.voutilai...@gmail.com>
Implement LWG 2729 for tuple.
* include/std/tuple (_Tuple_impl(_Tuple_impl&&)):
Suppress conditionally.
(_Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&&)): Likewise.
(__is_tuple_impl_trait_impl, __is_tuple_impl_trait): New.
(_Tuple_impl(const _Head&)): Constrain.
(_Tuple_impl(_UHead&&)): Likewise.
(_Tuple_impl(_Tuple_impl&&)): Suppress conditionally.
(_Tuple_impl(const _Tuple_impl<_Idx, _UHead>&)): Constrain.
(_Tuple_impl(_Tuple_impl<_Idx, _UHead>&&)): Likewise.
(operator=(const tuple&)): Enable conditionally.
(operator=(tuple&&)): Suppress conditionally.
(operator=(const tuple<_UElements...>&)): Constrain.
(operator=(tuple<_UElements...>&&)): Likewise.
(operator=(const tuple&)): Enable conditionally (2-param tuple).
(operator=(tuple&&)): Suppress conditionally (2-param tuple).
(operator=(const tuple<_U1, _U2>&)): Constrain.
(operator=(tuple<_U1, _U2>&&)): Likewise.
(operator=(const pair<_U1, _U2>&)): Likewise.
(operator=(pair<_U1, _U2>&&)): Likewise.
* testsuite/20_util/tuple/element_access/get_neg.cc: Adjust.
* testsuite/20_util/tuple/tuple_traits.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/tuple/77802.cc
Removed:
trunk/libstdc++-v3/testsuite/20_util/tuple/tuple_traits.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/tuple
trunk/libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc

[Bug libstdc++/77727] Unwrapping std::optional constructor is not working for non-transferable object

2016-09-26 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77727

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Sep 26 20:51:42 2016
New Revision: 240511

URL: https://gcc.gnu.org/viewcvs?rev=240511=gcc=rev
Log:
PR libstdc++/77727
* include/std/optional (optional(const optional<_Up>&)):
Default-initialize the base and use emplace.
(optional(optional<_Up>&&)): Likewise.
* testsuite/20_util/optional/cons/77727.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/optional/cons/77727.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/optional

[Bug libstdc++/77537] [6 Regression] pair constructors do not properly SFINAE

2016-09-26 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77537

--- Comment #9 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Sep 26 19:56:14 2016
New Revision: 240507

URL: https://gcc.gnu.org/viewcvs?rev=240507=gcc=rev
Log:
Backport from mainline
2016-09-21  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/77537
Implement LWG 2729 for pair.
* include/bits/stl_pair.h (_PCC): New.
(_ConstructiblePair, _ImplicitlyConvertiblePair):
Turn into static member functions of _PCC.
(_MoveConstructiblePair, _ImplicitlyMoveConvertiblePair): Likewise.
(_PCCP): New.
(pair(const _T1&, const _T2&)): Adjust.
(_PCCFP): New.
(pair(const pair<_U1, _U2>&)): Adjust.
(pair(_U1&&, const _T2&)): Likewise.
(pair(const _T1&, _U2&&)): Likewise.
(pair(_U1&&, _U2&&)): Likewise.
(pair(pair<_U1, _U2>&&)): Likewise.
(operator=(const pair&)): Make conditionally deleted.
(operator=(pair&&)): Make conditionally suppressed.
(operator=(const pair<_U1, _U2>&)): Constrain.
(operator=(pair<_U1, _U2>&&): Likewise.
* include/std/type_traits (__nonesuch): New.
* testsuite/20_util/pair/traits.cc: New.

Added:
branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/pair/traits.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/bits/stl_pair.h
branches/gcc-6-branch/libstdc++-v3/include/std/type_traits

[Bug libstdc++/77717] testsuite/21_strings/basic_string_view/operations/compare/char/1.cc makes undefined memcmp call

2016-09-26 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77717

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Sep 26 09:46:19 2016
New Revision: 240486

URL: https://gcc.gnu.org/viewcvs?rev=240486=gcc=rev
Log:
PR libstdc++/77717
* testsuite/21_strings/basic_string_view/operations/compare/char/1.cc:
Fix an out-of-bounds access.

Modified:
trunk/libstdc++-v3/ChangeLog
   
trunk/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc

[Bug libstdc++/77288] Std::experimental::optional::operator= implementation is broken in gcc 6.1

2016-09-21 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77288

--- Comment #8 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Sep 21 17:37:17 2016
New Revision: 240324

URL: https://gcc.gnu.org/viewcvs?rev=240324=gcc=rev
Log:
PR libstdc++/77288
* include/std/optional (__is_optional_impl, __is_optional): Remove.
(__converts_from_optional, __assigns_from_optional): New.
(optional(_Up&&)): Use is_same instead of __is_optional.
(optional(const optional<_Up>&)): Constrain with
__converts_from_optional.
(optional(optional<_Up>&&)): Likewise.
(operator=(_Up&&)): Use is_same instead of __is_optional, check
is_same and is_scalar.
(operator=(const optional<_Up>&)): Constrain with
__converts_from_optional and __assigns_from_optional.
(operator=(optional<_Up>&&)): Likewise.
* testsuite/20_util/optional/77288.cc: New.
* testsuite/20_util/optional/cons/value.cc: Adjust.

Added:
trunk/libstdc++-v3/testsuite/20_util/optional/77288.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/optional
trunk/libstdc++-v3/testsuite/20_util/optional/cons/value.cc

[Bug libstdc++/77537] pair constructors do not properly SFINAE

2016-09-21 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77537

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Sep 21 16:48:35 2016
New Revision: 240322

URL: https://gcc.gnu.org/viewcvs?rev=240322=gcc=rev
Log:
PR libstdc++/77537
Implement LWG 2729 for pair.
* include/bits/stl_pair.h (_PCC): New.
(_ConstructiblePair, _ImplicitlyConvertiblePair):
Turn into static member functions of _PCC.
(_MoveConstructiblePair, _ImplicitlyMoveConvertiblePair): Likewise.
(_PCCP): New.
(pair(const _T1&, const _T2&)): Adjust.
(_PCCFP): New.
(pair(const pair<_U1, _U2>&)): Adjust.
(pair(_U1&&, const _T2&)): Likewise.
(pair(const _T1&, _U2&&)): Likewise.
(pair(_U1&&, _U2&&)): Likewise.
(pair(pair<_U1, _U2>&&)): Likewise.
(operator=(const pair&)): Make conditionally deleted.
(operator=(pair&&)): Make conditionally suppressed.
(operator=(const pair<_U1, _U2>&)): Constrain.
(operator=(pair<_U1, _U2>&&): Likewise.
* include/std/type_traits (__nonesuch): New.
* testsuite/20_util/pair/traits.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/pair/traits.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/stl_pair.h
trunk/libstdc++-v3/include/std/type_traits

[Bug libstdc++/77619] uninitialized_meow_construct and friends not exception safe

2016-09-20 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77619

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Tue Sep 20 15:15:36 2016
New Revision: 240264

URL: https://gcc.gnu.org/viewcvs?rev=240264=gcc=rev
Log:
PR libstdc++/77619
* include/bits/stl_construct.h: (_Construct_novalue): New.
(_Destroy_n_aux, _Destroy_n): New.
* include/bits/stl_uninitialized.h: (type_traits):
New include in C++11 mode.
(__uninitialized_default_novalue_1): New.
(__uninitialized_default_novalue_n_1): Likewise.
(__uninitialized_default_novalue): Likewise.
(__uninitialized_default_novalue_n): Likewise.
(__uninitialized_copy_n_pair): Likewise.
(uninitialized_default_construct):
Use __uninitialized_default_novalue.
(uninitialized_default_construct_n):
Use __uninitialized_default_novalue_n.
(uninitialized_value_construct): Use __uninitialized_default.
(uninitialized_value_construct_n): Use __uninitialized_default_n.
(uninitialized_move): Use uninitialized_copy.
(uninitialized_move_n): Use __uninitialized_copy_n_pair.
(destroy_at): Use _Destroy.
(destroy): Likewise.
(destroy_n): Likewise.
* testsuite/20_util/specialized_algorithms/
memory_management_tools/1.cc: Add tests for exceptions,
add tests for trivial cases for construct and move.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/stl_construct.h
trunk/libstdc++-v3/include/bits/stl_uninitialized.h
   
trunk/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc

[Bug libstdc++/77395] [6/7 Regression] std::is_constructible is false for type constructible via implicit conversion operator affecting std::tuple

2016-08-31 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77395

--- Comment #7 from ville at gcc dot gnu.org ---
Author: ville
Date: Wed Aug 31 12:38:05 2016
New Revision: 239890

URL: https://gcc.gnu.org/viewcvs?rev=239890=gcc=rev
Log:
PR libstdc++/77395
* include/std/type_traits (is_constructible): Forward-declare...
(__is_base_to_derived_ref): ...and use here.
* testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
* testsuite/20_util/is_constructible/77395.cc: New.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.
* testsuite/20_util/tuple/77395.cc: New.

Added:
   
branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/is_constructible/77395.cc
  - copied, changed from r239884,
branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/tuple/77395.cc
  - copied, changed from r239884,
branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/include/std/type_traits
   
branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc

[Bug libstdc++/77395] [6/7 Regression] std::is_constructible is false for type constructible via implicit conversion operator affecting std::tuple

2016-08-30 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77395

--- Comment #5 from ville at gcc dot gnu.org ---
Author: ville
Date: Tue Aug 30 18:46:11 2016
New Revision: 239870

URL: https://gcc.gnu.org/viewcvs?rev=239870=gcc=rev
Log:
PR libstdc++/77395
* include/std/type_traits (is_constructible): Forward-declare...
(__is_base_to_derived_ref): ...and use here.
* testsuite/20_util/declval/requirements/1_neg.cc: Adjust.
* testsuite/20_util/is_constructible/77395.cc: New.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc: Adjust.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.
* testsuite/20_util/tuple/77395.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/is_constructible/77395.cc
  - copied, changed from r239867,
trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
trunk/libstdc++-v3/testsuite/20_util/tuple/77395.cc
  - copied, changed from r239867,
trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/type_traits
trunk/libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
   
trunk/libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
   
trunk/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc

[Bug libstdc++/71313] [Filesystem TS] remove_all fails to remove directory contents recursively

2016-07-04 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71313

--- Comment #5 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Jul  4 13:52:21 2016
New Revision: 237981

URL: https://gcc.gnu.org/viewcvs?rev=237981=gcc=rev
Log:
Backport from mainline
2016-07-04  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/71313
* src/filesystem/ops.cc (remove_all(const path&, error_code&)):
Call remove_all for children of a directory.
* testsuite/experimental/filesystem/operations/create_directories.cc:
Adjust.

Modified:
branches/gcc-5-branch/libstdc++-v3/ChangeLog
branches/gcc-5-branch/libstdc++-v3/src/filesystem/ops.cc
   
branches/gcc-5-branch/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc

[Bug libstdc++/71313] [Filesystem TS] remove_all fails to remove directory contents recursively

2016-07-04 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71313

--- Comment #4 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Jul  4 13:15:10 2016
New Revision: 237980

URL: https://gcc.gnu.org/viewcvs?rev=237980=gcc=rev
Log:
PR libstdc++/71313
* src/filesystem/ops.cc (remove_all(const path&, error_code&)):
Call remove_all for children of a directory.
* testsuite/experimental/filesystem/operations/create_directories.cc:
Adjust.

Modified:
branches/gcc-6-branch/libstdc++-v3/ChangeLog
branches/gcc-6-branch/libstdc++-v3/src/filesystem/ops.cc
   
branches/gcc-6-branch/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc

[Bug libstdc++/71313] [Filesystem TS] remove_all fails to remove directory contents recursively

2016-07-04 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71313

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Jul  4 12:52:49 2016
New Revision: 237978

URL: https://gcc.gnu.org/viewcvs?rev=237978=gcc=rev
Log:
PR libstdc++/71313
* src/filesystem/ops.cc (remove_all(const path&, error_code&)):
Call remove_all for children of a directory.
* testsuite/experimental/filesystem/operations/create_directories.cc:
Adjust.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/src/filesystem/ops.cc
   
trunk/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc

[Bug c++/69855] Missing diagnostic for overload that only differs by return type

2016-05-27 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69855

--- Comment #5 from ville at gcc dot gnu.org ---
Author: ville
Date: Fri May 27 14:59:01 2016
New Revision: 236826

URL: https://gcc.gnu.org/viewcvs?rev=236826=gcc=rev
Log:
/cp
PR c++/69855
* name-lookup.c (pushdecl_maybe_friend_1): Push local function
decls into the global scope after stripping template bits
and setting DECL_ANTICIPATED.

/testsuite
PR c++/69855
* g++.dg/overload/69855.C: New.
* g++.old-deja/g++.law/missed-error2.C: Adjust.
* g++.old-deja/g++.pt/crash3.C: Likewise.

Added:
trunk/gcc/testsuite/g++.dg/overload/69855.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/name-lookup.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
trunk/gcc/testsuite/g++.old-deja/g++.pt/crash3.C

[Bug libstdc++/66338] std::forward_as_tuple() issue with single argument

2016-05-27 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66338

--- Comment #9 from ville at gcc dot gnu.org ---
Author: ville
Date: Fri May 27 14:08:37 2016
New Revision: 236822

URL: https://gcc.gnu.org/viewcvs?rev=236822=gcc=rev
Log:
2016-05-24  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/66338
* include/std/tuple (_TMC): Add a check for _NotSameTuple.
* include/std/tuple (tuple(_UElements&&...)): Remove the separate
check for _NotSameTuple.
* include/std/tuple (_TMCT): New.
* include/std/tuple (tuple(const tuple<_UElements...>&)): Use it.
* include/std/tuple (tuple(tuple<_UElements...>&&)): Likewise.
* include/std/tuple (tuple(allocator_arg_t, const _Alloc&,
  const tuple<_UElements...>&)): Likewise.
* include/std/tuple (tuple(allocator_arg_t, const _Alloc&,
  tuple<_UElements...>&&)): Likewise.
* testsuite/20_util/tuple/cons/66338.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/tuple

[Bug libstdc++/70437] [6 Regression] Instantiation loop with pair and is_constructible

2016-04-05 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70437

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Tue Apr  5 11:31:30 2016
New Revision: 234743

URL: https://gcc.gnu.org/viewcvs?rev=234743=gcc=rev
Log:
PR libstdc++/70437
* include/bits/stl_pair.h (_ConstructiblePair,
_ImplicitlyConvertiblePair, _MoveConstructiblePair,
_ImplicitlyMoveConvertiblePair): Add shortcut conditions
for same-type cases.
* testsuite/20_util/pair/70437.cc: New.

Added:
trunk/libstdc++-v3/testsuite/20_util/pair/70437.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/stl_pair.h

[Bug libstdc++/66693] [C++17] std::tuple_size fails with const std::array

2015-12-21 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66693

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Dec 21 11:22:16 2015
New Revision: 231875

URL: https://gcc.gnu.org/viewcvs?rev=231875=gcc=rev
Log:
PR libstdc++/66693.

* include/std/tuple (tuple_element, tuple_size, tuple_element_t,
__tuple_element_t): Move to...
* include/std/utility: ...here.
* testsuite/20_util/pair/astuple/astuple.cc: Adjust.
* testsuite/20_util/pair/astuple/astuple_cpp14.cc: New.
* testsuite/20_util/tuple/tuple_element.cc: Adjust.
* testsuite/20_util/tuple/tuple_element_t.cc: Likewise.
* testsuite/20_util/tuple/tuple_size.cc: Likewise.
* testsuite/23_containers/array/tuple_interface/tuple_element.cc:
Likewise.
* testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc:
New.
* testsuite/23_containers/array/tuple_interface/tuple_size.cc: Adjust.

Added:
trunk/libstdc++-v3/testsuite/20_util/pair/astuple/astuple_cpp14.cc
   
trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/tuple
trunk/libstdc++-v3/include/std/utility
trunk/libstdc++-v3/testsuite/20_util/pair/astuple/astuple.cc
trunk/libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
trunk/libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
trunk/libstdc++-v3/testsuite/20_util/tuple/tuple_size.cc
   
trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
   
trunk/libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_size.cc

[Bug libstdc++/68276] ios_base::_M_grow_words should use new (std::nothrow)

2015-12-18 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68276

--- Comment #2 from ville at gcc dot gnu.org ---
Author: ville
Date: Fri Dec 18 15:17:09 2015
New Revision: 231819

URL: https://gcc.gnu.org/viewcvs?rev=231819=gcc=rev
Log:
2015-12-18  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR libstdc++/68276

* src/c++11/ios.cc (_M_grow_words): Use nothrow new.
* testsuite/27_io/ios_base/storage/11584.cc: Adjust.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/src/c++11/ios.cc
trunk/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc

[Bug libstdc++/68139] rethrow_if_nested should tolerate overloaded unary operator

2015-12-11 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68139

--- Comment #3 from ville at gcc dot gnu.org ---
Author: ville
Date: Fri Dec 11 12:04:23 2015
New Revision: 231562

URL: https://gcc.gnu.org/viewcvs?rev=231562=gcc=rev
Log:
PR libstdc++/68139

Added:
trunk/libstdc++-v3/testsuite/18_support/nested_exception/68139.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/libsupc++/nested_exception.h

[Bug c++/58566] [c++11] ICE with invalid expression in lambda body

2015-10-12 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58566

--- Comment #6 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Oct 12 08:55:19 2015
New Revision: 228706

URL: https://gcc.gnu.org/viewcvs?rev=228706=gcc=rev
Log:
PR c++/58566

/cp
2015-10-12  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR c++/58566
* lambda.c (lambda_return_type): Return error_mark_node
instead of void_type_node for the error cases.

/testsuite
2015-10-12  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR c++/58566
* g++.dg/cpp0x/lambda/lambda-58566.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-58566.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/lambda.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/67844] [6 Regression] Cannot make tuple of class with template constructor

2015-10-05 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67844

--- Comment #5 from ville at gcc dot gnu.org ---
Author: ville
Date: Mon Oct  5 09:57:20 2015
New Revision: 228468

URL: https://gcc.gnu.org/viewcvs?rev=228468=gcc=rev
Log:
2015-10-05  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR 67844.
* include/std/tuple (_TC::_NonNestedTuple): Eagerly reject
conversions from tuple types same as the target tuple.
* testsuite/20_util/tuple/67844.cc: New.
* testsuite/20_util/tuple/cons/nested_tuple_construct.cc: Add
a missing copyright header.

Added:
trunk/libstdc++-v3/testsuite/20_util/tuple/67844.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/tuple
trunk/libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc


[Bug c++/54430] [C++11] For-Loop: Scope of iterating variable begins too early

2015-10-01 Thread ville at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54430

--- Comment #8 from ville at gcc dot gnu.org ---
Author: ville
Date: Thu Oct  1 19:22:08 2015
New Revision: 228354

URL: https://gcc.gnu.org/viewcvs?rev=228354=gcc=rev
Log:
PR c++/54430

/cp
2015-10-01  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR c++/54430
* name-lookup.c (push_binding): Make non-static.
* name-lookup.h (push_binding): Declare it.
* parser.c (cp_parser_range_for): Use it, get the range
declaration away from the scope until the range expression
has been parsed, then restore the declaration.

/testsuite
2015-10-01  Ville Voutilainen  <ville.voutilai...@gmail.com>

PR c++/54430
* g++.dg/cpp0x/range-for30.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/range-for30.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/name-lookup.c
trunk/gcc/cp/name-lookup.h
trunk/gcc/cp/parser.c
trunk/gcc/testsuite/ChangeLog