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

Reply via email to