https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125760
Bug ID: 125760
Summary: ICE in tree check: expected class ‘expression’, have
‘declaration’
Product: gcc
Version: 17.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 SELECT TYPE construct whose selector is an array section of an
unlimited-polymorphic (CLASS(*)) array causes an internal compiler error.
$ cat z1.f90
program p
class(*), pointer :: ptr(:)
integer, target :: arr(5) = [1, 2, 3, 4, 5]
ptr => arr
select type (a => ptr(2:4))
type is (integer)
if (any (a /= [2, 3, 4])) stop 1
print *, "ok"
end select
end
$ gfc z1.f90
z1.f90:1:11:
1 | program p
| 1
internal compiler error: tree check: expected class ‘expression’, have
‘declaration’ (var_decl) in tree_operand_check, at tree.h:4354
0x24e902f internal_error(char const*, ...)
../../trunk/gcc/diagnostic-global-context.cc:787
0x57d9be tree_class_check_failed(tree_node const*, tree_code_class, char
const*, int, char const*)
../../trunk/gcc/tree.cc:9269
0x42d38b expr_check(tree_node*, char const*, int, char const*)
../../trunk/gcc/tree.h:3993
0x42d38b tree_operand_check(tree_node*, int, char const*, int, char const*)
../../trunk/gcc/tree.h:4354
0x42d38b trans_associate_var
../../trunk/gcc/fortran/trans-stmt.cc:2320
0x8a7531 gfc_trans_block_construct(gfc_code*)