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*)

Reply via email to