Summary: | [10 Regression] ICE tree check: expected overload, have function_decl in get_class_binding_direct, at cp/name-lookup.c:1332 | ||
---|---|---|---|
Product: | gcc | Reporter: | G. Steinmetz <gscfq> |
Component: | c++ | Assignee: | Jason Merrill <jason> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | jason, marxin, nathan, webrown.cpp |
Priority: | P2 | Keywords: | ice-on-invalid-code |
Version: | 11.0 | ||
Target Milestone: | 11.0 | ||
Host: | Target: | ||
Build: | Known to work: | 11.0 | |
Known to fail: | 10.5.0 | Last reconfirmed: | 2020-11-25 00:00:00 |
Description
G. Steinmetz
2020-11-24 18:32:36 UTC
Started to ICE with r8-7029-g35129fd3a745403b. The master branch has been updated by Jason Merrill <jason@gcc.gnu.org>: https://gcc.gnu.org/g:936d500dfc17f58f2507ecd0f7f26e4f197052ee commit r11-8120-g936d500dfc17f58f2507ecd0f7f26e4f197052ee Author: Jason Merrill <jason@redhat.com> Date: Sat Apr 10 14:00:15 2021 -0400 c++: ICE with anonymous union [PR97974] Here lookup got confused by finding a conversion operator from lookup_anon_field. Let's avoid this by pruning functions from CLASSTYPE_MEMBER_VEC as well as TYPE_FIELDS. gcc/cp/ChangeLog: PR c++/97974 * decl.c (fixup_anonymous_aggr): Prune all functions from CLASSTYPE_MEMBER_VEC. gcc/testsuite/ChangeLog: PR c++/97974 * g++.dg/lookup/pr84962.C: Adjust diagnostic. * g++.dg/other/anon-union5.C: New test. Fixed for 11 so far. The master branch has been updated by Jason Merrill <jason@gcc.gnu.org>: https://gcc.gnu.org/g:58a92b789a77cdade1f41800efebf6e0686f9982 commit r12-298-g58a92b789a77cdade1f41800efebf6e0686f9982 Author: Jason Merrill <jason@redhat.com> Date: Sat Apr 10 14:00:15 2021 -0400 c++: ICE with anonymous union [PR97974] While working on the GCC 11 patch, it occurred to me that we could move the errors about invalid members from finish_struct_anon_r to here, so we properly get a diagnostic in g++.law/union4.C. gcc/cp/ChangeLog: PR c++/97974 * class.c (finish_struct_anon_r): Drop complain parm. Remove non-field diagnostic. (finish_struct_anon): Adjust. * decl.c (fixup_anonymous_aggr): Move non-field diagnostic here. gcc/testsuite/ChangeLog: PR c++/97974 * g++.old-deja/g++.law/union4.C: Add expected diagnostic. GCC 9.4 is being released, retargeting bugs to GCC 9.5. GCC 9 branch is being closed GCC 10.4 is being released, retargeting bugs to GCC 10.5. Fixed in GCC 11. |