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

            Bug ID: 113118
           Summary: ICE on assignment of derived types with allocatable
                    class component
           Product: gcc
           Version: 13.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: baradi09 at gmail dot com
  Target Milestone: ---

I get an internal compiler error with the following demo code. As far, as I can
judge, the code is standard conforming.

module bugdemo
  implicit none

  type :: base_type
    character(:), allocatable :: name
  end type base_type

  type :: base_type_item
    class(base_type), allocatable :: item
  end type base_type_item

  type, extends(base_type) :: derived_type
    integer :: val = 0
  end type derived_type

contains

  function derived_type_as_item(name, val) result(item)
    character(*), intent(in) :: name
    integer, intent(in) :: val
    type(base_type_item), allocatable :: item

    item = base_type_item(derived_type(name=name, val=val))

  end function derived_type_as_item

end module bugdemo

Compiling it with

gfortran -c bugdemo.f90

results in

   23 |     item = base_type_item(derived_type(name=name, val=val))             
      |                                                           1             
internal compiler error: in fold_convert_loc, at fold-const.cc:2627             
0x69f6fa fold_convert_loc(unsigned int, tree_node*, tree_node*)                 
        ../.././gcc/fold-const.cc:2627                                          
0x824e17 gfc_trans_subcomponent_assign                                         
        ../.././gcc/fortran/trans-expr.cc:9027                                 
0x825a22 gfc_trans_structure_assign(tree_node*, gfc_expr*, bool, bool) 
        ../.././gcc/fortran/trans-expr.cc:9265
0x826808 gfc_conv_structure(gfc_se*, gfc_expr*, int)                           
        ../.././gcc/fortran/trans-expr.cc:9332                                 
0x81d6fc gfc_conv_expr(gfc_se*, gfc_expr*)                                     
        ../.././gcc/fortran/trans-expr.cc:9500                                 
0x829ab5 gfc_trans_assignment_1
        ../.././gcc/fortran/trans-expr.cc:11877                                
0x7e0f77 trans_code                                                            
        ../.././gcc/fortran/trans.cc:2229                                      
0x80f1e9 gfc_generate_function_code(gfc_namespace*)                            
        ../.././gcc/fortran/trans-decl.cc:7715                                 
0x7e5641 gfc_generate_module_code(gfc_namespace*)                              
        ../.././gcc/fortran/trans.cc:2649                                      
0x785d35 translate_all_program_units                                           
        ../.././gcc/fortran/parse.cc:6707                                      
0x785d35 gfc_parse_file()                                                      
        ../.././gcc/fortran/parse.cc:7026                                      
0x7dde4f gfc_be_parse_file                                                     
        ../.././gcc/fortran/f95-lang.cc:229                                    
Please submit a full bug report, with preprocessed source.                     
Please include the complete backtrace with any bug report.                     
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to