c++/modules: ICEs with modular fmtlib
Building modular fmtlib triggered two small modules bugs in C++23 and
C++26 mode respectively (due to libstdc++ header differences).
The first is that a TEMPLATE_DECL having DECL_LANG_SPECIFIC doesn't
necessarily imply that its DECL_TEMPLATE_RESULT has DECL_LANG_SPECIFIC.
So in add_specializations we need to use STRIP_TEMPLATE consistently;
this is a follow-up to r12-7187-gdb84f382ae3dc2.
The second is that get_originating_module_decl was ICEing on class-scope
enumerators injected via using-enum. I suppose we should handle them
like a class-scope entity rather than a non-using-enum enumerator.
gcc/cp/ChangeLog:
* module.cc (depset::hash::add_specializations): Use
STRIP_TEMPLATE consistently.
(get_originating_module_decl): Handle class-scope CONST_DECL.
gcc/testsuite/ChangeLog:
* g++.dg/modules/friend-6_a.C: New test.
* g++.dg/modules/using-enum-3_a.C: New test.
* g++.dg/modules/using-enum-3_b.C: New test.
Reviewed-by:
Jason Merill <jason@redhat.com>
Showing
- gcc/cp/module.cc 3 additions, 2 deletionsgcc/cp/module.cc
- gcc/testsuite/g++.dg/modules/friend-6_a.C 11 additions, 0 deletionsgcc/testsuite/g++.dg/modules/friend-6_a.C
- gcc/testsuite/g++.dg/modules/using-enum-3_a.C 11 additions, 0 deletionsgcc/testsuite/g++.dg/modules/using-enum-3_a.C
- gcc/testsuite/g++.dg/modules/using-enum-3_b.C 6 additions, 0 deletionsgcc/testsuite/g++.dg/modules/using-enum-3_b.C
Loading
Please register or sign in to comment