https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103499
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2023-06-05 Keywords| |ice-checking Status|UNCONFIRMED |NEW Ever confirmed|0 |1 --- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Mark Millard from comment #3) > Since my example shows that std::is_nothrow_constructible_v<. . .> > can run into the problem, adding bugzilla 99227 ("[meta] [modules] > Bugs relating to header-units of STL header files") to the Blocks > list might be appropriate here. (Not something I can do.) I don't think this is related to header-units. Anything that uses the derived destructor hits the problem. But by that metric, nearly every modules bug would affect header-units for the standard library, since you can use type traits to test all kinds of things. It gives an ICE on trunk with checking enabled: $ cat export.cc export module derived_interface; export struct base { virtual ~base() noexcept = default; }; export struct derived : base { }; $ cat import.cc import derived_interface; void test(derived* p) { delete p; } $ ~/gcc/14/bin/g++ -fmodules-ts -c export.cc tmp$ ~/gcc/14/bin/g++ -fmodules-ts -c import.cc import.cc: In function ‘void test(derived@derived_interface*)’: import.cc:5:9: error: invalid use of non-static member function ‘virtual derived@derived_interface::~derived()’ 5 | delete p; | ^ In module derived_interface, imported at import.cc:1: export.cc:8:15: note: declared here 8 | export struct derived : base | ^~~~~~~ import.cc:5:9: internal compiler error: in fold_convert_loc, at fold-const.cc:2574 5 | delete p; | ^ 0x7f72f9 fold_convert_loc(unsigned int, tree_node*, tree_node*) /home/jwakely/src/gcc/gcc/gcc/fold-const.cc:2574 0x9c9f0e build_vfn_ref(tree_node*, tree_node*) /home/jwakely/src/gcc/gcc/gcc/cp/class.cc:781 0x9a9578 build_over_call /home/jwakely/src/gcc/gcc/gcc/cp/call.cc:10415 0x9a6615 build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, tree_node**, int) /home/jwakely/src/gcc/gcc/gcc/cp/call.cc:11702 0x9a77fa build_special_member_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, int) /home/jwakely/src/gcc/gcc/gcc/cp/call.cc:11180 0xa8ad3d build_dtor_call /home/jwakely/src/gcc/gcc/gcc/cp/init.cc:5059 0xa8ad3d build_delete(unsigned int, tree_node*, tree_node*, special_function_kind, int, int, int) /home/jwakely/src/gcc/gcc/gcc/cp/init.cc:5255 0xa6772b delete_sanity(unsigned int, tree_node*, tree_node*, bool, int, int) /home/jwakely/src/gcc/gcc/gcc/cp/decl2.cc:691 0xb546e8 cp_parser_unary_expression /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:9002 0xb1fc5b cp_parser_binary_expression /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:10147 0xb20b72 cp_parser_assignment_expression /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:10491 0xb23093 cp_parser_expression /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:10661 0xb27227 cp_parser_expression_statement /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:12849 0xb322dd cp_parser_statement /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:12629 0xb335cd cp_parser_statement_seq_opt /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:13000 0xb336a7 cp_parser_compound_statement /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:12952 0xb57cd5 cp_parser_function_body /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:25368 0xb57cd5 cp_parser_ctor_initializer_opt_and_function_body /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:25419 0xb59d0e cp_parser_function_definition_after_declarator /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:32054 0xb5b180 cp_parser_function_definition_from_specifiers_and_declarator /home/jwakely/src/gcc/gcc/gcc/cp/parser.cc:31971 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.