On Mon, Sep 24, 2018 at 12:48:56PM +0200, Paolo Carlini wrote: > as explained in the audit trail, the gcc_assert added by Nathan triggers > during error-recovery too, when add_method correctly returns false because > it failed to add the method. Thus it seems that we should simply loosen a > bit the assertion. Tested x86_64-linux.
Testcase fails with check-c++-all: FAIL: g++.dg/cpp0x/pr85070.C -std=c++17 (test for excess errors) FAIL: g++.dg/cpp0x/pr85070.C -std=c++2a (test for excess errors) FAIL: g++.dg/cpp0x/pr85070.C -std=c++17 -fconcepts (test for excess errors) Any reason why you've used c++14_only effective target, rather than c++14? If I use the latter, i.e. expect c++17/2a/17 + concepts to behave like c++14 in this case, there are no failures. Tested with make check-c++-all RUNTESTFLAGS=dg.exp=pr85070.C, ok for trunk? 2018-10-11 Jakub Jelinek <ja...@redhat.com> PR c++/85070 * g++.dg/cpp0x/pr85070.C: Change effective target for diagnostics from c++14_only to c++14. --- gcc/testsuite/g++.dg/cpp0x/pr85070.C.jj 2018-09-25 15:14:43.205270858 +0200 +++ gcc/testsuite/g++.dg/cpp0x/pr85070.C 2018-10-11 19:55:17.795180058 +0200 @@ -4,10 +4,10 @@ struct A; struct B { - constexpr A & operator= (const A &); // { dg-warning "used" "" { target c++14_only } } + constexpr A & operator= (const A &); // { dg-warning "used" "" { target c++14 } } }; -struct A : B // { dg-error "cannot be overloaded" "" { target c++14_only } } +struct A : B // { dg-error "cannot be overloaded" "" { target c++14 } } { using B::operator=; } a { a = a }; Jakub