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

            Bug ID: 109785
           Summary: ICE in begin_maybe_infinite_loop
           Product: gcc
           Version: 13.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: fiesh at zefix dot tv
  Target Milestone: ---

This code:

struct Trans_NS___cxx11_basic_string {                                          
        constexpr Trans_NS___cxx11_basic_string();                              
};                                                                              
struct Ltt {                                                                    
        Trans_NS___cxx11_basic_string s;                                        
};                                                                              
template <int _Nm> struct __array_traits {                                      
        using _Type = Ltt[_Nm];                                                 
};                                                                              
template <int _Nm> struct array {                                               
        __array_traits<_Nm>::_Type _M_elems;                                    
};                                                                              
template <typename EnumT> struct Map {                                          
        Map() noexcept = default;                                               
        array<enumSize(EnumT{})> values_{};                                     
};                                                                              
enum TechnologyType {};                                                         
constexpr int enumSize(TechnologyType) { return 4; }                            
Map<TechnologyType> cuttingLtts_;                                

leads to the following segmentation fault:

% g++ -std=c++20 -c a.ii
a.ii:15:34: internal compiler error: Segmentation fault
   15 |         array<enumSize(EnumT{})> values_{};
      |                                  ^~~~~~~
0xde221f crash_signal
        /usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/toplev.cc:314
0x7f5a43f28f5f ???
       
/usr/src/debug/sys-libs/glibc-2.36-r7/glibc-2.36/signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x887177 begin_maybe_infinite_loop
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/semantics.cc:693
0x8873a3 finish_for_cond(tree_node*, tree_node*, bool, unsigned short)
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/semantics.cc:1318
0x7765cb build_vec_init(tree_node*, tree_node*, tree_node*, bool, int, int,
vec<tree_node*, va_gc, vl_embed>**)
        /usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/init.cc:4854
0x8958be expand_vec_init_expr(tree_node*, tree_node*, int, vec<tree_node*,
va_gc, vl_embed>**)
        /usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/tree.cc:863
0x6fb4f7 cxx_eval_vec_init
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/constexpr.cc:5324
0x6fb4f7 cxx_eval_constant_expression
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/constexpr.cc:7610
0x7007b2 cxx_eval_outermost_constant_expr
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/constexpr.cc:8318
0x7049a7 maybe_constant_init_1
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/constexpr.cc:8810
0x8be6ee massage_init_elt
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/typeck2.cc:1541
0x8bfe4b process_init_constructor_record
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/typeck2.cc:1813
0x8bfe4b process_init_constructor
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/typeck2.cc:2067
0x8bfe4b digest_init_r
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/typeck2.cc:1332
0x8c05dc digest_init_flags(tree_node*, tree_node*, int, int)
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/typeck2.cc:1378
0x8c05dc digest_nsdmi_init(tree_node*, tree_node*, int)
       
/usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/typeck2.cc:1464
0x77aff0 maybe_instantiate_nsdmi_init(tree_node*, int)
        /usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/init.cc:635
0x77b450 get_nsdmi(tree_node*, bool, int)
        /usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/init.cc:669
0x77c2e1 perform_member_init
        /usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/init.cc:963
0x77c2e1 emit_mem_initializers(tree_node*)
        /usr/src/debug/sys-devel/gcc-13.1.0-r1/gcc-13.1.0/gcc/cp/init.cc:1609
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://bugs.gentoo.org/> for instructions.

It's a regression from since it used to work before gcc 13.

Reply via email to