[Bug c++/102651] [9/10/11/12/13 Regression] typeid(X**) instantiates X caused by r0-109856
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Apr 29 03:00:51 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102651
--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <jason@gcc.gnu.org>:
https://gcc.gnu.org/g:97b30a399ef561f6f37a2c08c830fdf3141bb504
commit r13-24-g97b30a399ef561f6f37a2c08c830fdf3141bb504
Author: Jason Merrill <jason@redhat.com>
Date: Fri Apr 15 00:11:00 2022 -0400
c++: typeid and instantiation [PR102651]
PR49387 was a problem with initially asking for a typeid for a class
template specialization before it was complete, and later actually filling
in the descriptor when the class was complete, and thus disagreeing on the
form of the descriptor. I fixed that by forcing the class to be complete,
but this testcase shows why that approach is problematic. So instead let's
adjust the type of the descriptor later if needed.
PR c++/102651
PR c++/49387
gcc/cp/ChangeLog:
* rtti.cc (get_tinfo_decl_direct): Don't complete_type.
(emit_tinfo_decl): Update tdesc type if needed.
gcc/testsuite/ChangeLog:
* g++.dg/rtti/typeid-complete1.C: New test.
More information about the Gcc-bugs
mailing list