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)