[Bug c++/87571] [8/9 Regression] ICE in friend_accessible_p, accessing protected member of template friend inside template class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87571 --- Comment #5 from paolo at gcc dot gnu.org --- Author: paolo Date: Mon Mar 11 10:30:24 2019 New Revision: 269575 URL: https://gcc.gnu.org/viewcvs?rev=269575=gcc=rev Log: 2019-03-11 Paolo Carlini PR c++/87571 * g++.dg/template/memfriend18.C: New. Added: trunk/gcc/testsuite/g++.dg/template/memfriend18.C Modified: trunk/gcc/testsuite/ChangeLog
[Bug c++/87571] [8/9 Regression] ICE in friend_accessible_p, accessing protected member of template friend inside template class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87571 --- Comment #4 from Paolo Carlini --- This is fixed in trunk. I'm adding the testcase and removing the regression marker.
[Bug c++/87571] [8/9 Regression] ICE in friend_accessible_p, accessing protected member of template friend inside template class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87571 Jakub Jelinek changed: What|Removed |Added Target Milestone|8.3 |8.4 --- Comment #3 from Jakub Jelinek --- GCC 8.3 has been released.
[Bug c++/87571] [8/9 Regression] ICE in friend_accessible_p, accessing protected member of template friend inside template class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87571 Richard Biener changed: What|Removed |Added Priority|P3 |P2
[Bug c++/87571] [8/9 Regression] ICE in friend_accessible_p, accessing protected member of template friend inside template class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87571 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org, ||nathan at gcc dot gnu.org --- Comment #2 from Jakub Jelinek --- ICE started with r255780.
[Bug c++/87571] [8/9 Regression] ICE in friend_accessible_p, accessing protected member of template friend inside template class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87571 Alexandre Oliva changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2018-11-28 CC||aoliva at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Alexandre Oliva --- The reason private works where protected doesn't is that private access checking uses is_friend, whereas protected access checking uses friend_accessible_p. The latter is supposed to grant access whenever is_friend would (that's the assert that fails), but while is_friend checks various possibilities of template specialization with is_specialization_of_friend, friend_accessible_p seems to only handle one layer of template friends. I'm afraid I don't quite see how to extend e.g. protected_accessible_p, used by friend_accessible_p, to deal with additional template layers.
[Bug c++/87571] [8/9 Regression] ICE in friend_accessible_p, accessing protected member of template friend inside template class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87571 Richard Biener changed: What|Removed |Added Keywords||ice-on-valid-code Target Milestone|--- |8.3