https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120125

Nathaniel Shead <nshead at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2025-05-06
             Status|UNCONFIRMED                 |NEW
                 CC|                            |nshead at gcc dot gnu.org
     Ever confirmed|0                           |1
           Keywords|needs-reduction             |ice-on-valid-code
            Summary|ICE when using -Os and std  |[15/16 Regression] ICE in
                   |module together             |add_to_same_comdat_group
                   |                            |when using -Os or
                   |                            |-fdeclone-ctor-dtor

--- Comment #1 from Nathaniel Shead <nshead at gcc dot gnu.org> ---
Reduced:

  // vector.cpp
  export module vector;
  export extern "C++" {
    template <typename _Tp> struct __shared_ptr {
      __shared_ptr() {}
    };
    template class __shared_ptr<int>;

    template <typename _Tp>
    struct vector {
      friend __shared_ptr<int>;
    };
  }

  // main.cpp
  import vector;
  vector<int> vec;

$ g++ -fmodules -S -fdeclone-ctor-dtor vector.cpp main.cpp
main.cpp:2:1: internal compiler error: Segmentation fault
    2 | vector<int> vec;
      | ^~~~~~
0x3d40fdf internal_error(char const*, ...)
        ../../gcc/gcc/diagnostic-global-context.cc:517
0x1d6f7a8 crash_signal
        ../../gcc/gcc/toplev.cc:321
0x7f52dc05b32f ???
        ./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x15ca46f symtab_node::add_to_same_comdat_group(symtab_node*)
        ../../gcc/gcc/symtab.cc:492
0x11d3505 maybe_thunk_body
        ../../gcc/gcc/cp/optimize.cc:314
0x11d5580 maybe_clone_body(tree_node*)
        ../../gcc/gcc/cp/optimize.cc:561
0x135039f expand_or_defer_fn_1(tree_node*)
        ../../gcc/gcc/cp/semantics.cc:5508
0x13506e4 expand_or_defer_fn(tree_node*)
        ../../gcc/gcc/cp/semantics.cc:5543
0x11855fc post_load_processing
        ../../gcc/gcc/cp/module.cc:19241
0x118bb92 lazy_load_binding(unsigned int, tree_node*, tree_node*,
binding_slot*)
        ../../gcc/gcc/cp/module.cc:21122
0x11a8459 name_lookup::search_namespace_only(tree_node*)
        ../../gcc/gcc/cp/name-lookup.cc:929
0x11a9226 name_lookup::search_unqualified(tree_node*, cp_binding_level*)
        ../../gcc/gcc/cp/name-lookup.cc:1159
0x11c5d9c lookup_name(tree_node*, LOOK_where, LOOK_want)
        ../../gcc/gcc/cp/name-lookup.cc:8128
0xf3d11d lookup_name(tree_node*, LOOK_want)
        ../../gcc/gcc/cp/name-lookup.h:410
0x12207c5 cp_parser_lookup_name
        ../../gcc/gcc/cp/parser.cc:33039
0x12027ff cp_parser_template_name
        ../../gcc/gcc/cp/parser.cc:19930
0x1201ad4 cp_parser_template_id
        ../../gcc/gcc/cp/parser.cc:19537
0x1213477 cp_parser_class_name
        ../../gcc/gcc/cp/parser.cc:27434
0x11e4803 cp_parser_qualifying_entity
        ../../gcc/gcc/cp/parser.cc:7704
0x11e3bac cp_parser_nested_name_specifier_opt
        ../../gcc/gcc/cp/parser.cc:7390
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.


This reduced sample fails on 15 and trunk, but worked in 14.  It looks like it
might be helpful to add some "torture"-style tests with optimisation flags etc.
for the modules testsuite so that we catch these issues sooner.

Reply via email to