re PR c++/71979 (ICE with on C++ code with incorrect type in overloaded base class '=' operator: in build_base_path, at cp/class.c:304)
/cp 2016-09-22 Paolo Carlini <paolo.carlini@oracle.com> PR c++/71979 * class.c (build_base_path): Allow for lookup_base returning NULL_TREE. /testsuite 2016-09-22 Paolo Carlini <paolo.carlini@oracle.com> PR c++/71979 * g++.dg/cpp0x/pr71979.C: New. From-SVN: r240373
This commit is contained in:
parent
ed64a4e75f
commit
a608d15bed
@ -1,3 +1,9 @@
|
||||
2016-09-22 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/71979
|
||||
* class.c (build_base_path): Allow for lookup_base returning
|
||||
NULL_TREE.
|
||||
|
||||
2016-09-21 Jason Merrill <jason@redhat.com>
|
||||
|
||||
Core 903
|
||||
|
@ -296,12 +296,13 @@ build_base_path (enum tree_code code,
|
||||
/* This can happen when adjust_result_of_qualified_name_lookup can't
|
||||
find a unique base binfo in a call to a member function. We
|
||||
couldn't give the diagnostic then since we might have been calling
|
||||
a static member function, so we do it now. */
|
||||
a static member function, so we do it now. In other cases, eg.
|
||||
during error recovery (c++/71979), we may not have a base at all. */
|
||||
if (complain & tf_error)
|
||||
{
|
||||
tree base = lookup_base (probe, BINFO_TYPE (d_binfo),
|
||||
ba_unique, NULL, complain);
|
||||
gcc_assert (base == error_mark_node);
|
||||
gcc_assert (base == error_mark_node || !base);
|
||||
}
|
||||
return error_mark_node;
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2016-09-22 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/71979
|
||||
* g++.dg/cpp0x/pr71979.C: New.
|
||||
|
||||
2016-09-22 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
|
||||
* g++.dg/pr77550.C: Use __SIZE_TYPE__.
|
||||
|
15
gcc/testsuite/g++.dg/cpp0x/pr71979.C
Normal file
15
gcc/testsuite/g++.dg/cpp0x/pr71979.C
Normal file
@ -0,0 +1,15 @@
|
||||
// PR c++/71979
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
struct A
|
||||
{
|
||||
A & operator= (A &);
|
||||
};
|
||||
|
||||
struct B : A {}; // { dg-error "cannot bind" }
|
||||
|
||||
void foo ()
|
||||
{
|
||||
B b;
|
||||
b = B (); // { dg-error "use of deleted" }
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user