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.

Reply via email to