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

            Bug ID: 125721
           Summary: ICE in gfc_trans_subcomponent_assign
                    (fold_convert_loc)
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jvdelisle at gcc dot gnu.org
  Target Milestone: ---

A structure constructor that associates a CLASS pointer component
(unlimited-polymorphic "class(*), pointer" or typed "class(T), pointer")
with a derived-type target causes an internal compiler error.

Minimal reproducer:

  program p
    type one
      integer :: ch
    end type
    type check
      class(*), pointer :: obj
    end type
    type(check) :: c
    type(one), pointer :: k
    allocate (k)
    c = check(k)
  end

Observed:

  internal compiler error: in fold_convert_loc, at fold-const.cc:2682
  0x...  fold_convert_loc(unsigned long, tree_node*, tree_node*)
         gcc/fold-const.cc:2682
  0x...  gfc_trans_subcomponent_assign
         gcc/fortran/trans-expr.cc
  0x...  gfc_trans_structure_assign(tree_node*, gfc_expr*, bool, bool)
  0x...  gfc_conv_structure(gfc_se*, gfc_expr*, int)

Reply via email to