https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71703
Thomas Koenig <tkoenig at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |tkoenig at gcc dot gnu.org --- Comment #11 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- Part of the problem seems to be in gfc_conv_same_type_as, where we have if (UNLIMITED_POLY (b)) { tmp = gfc_class_vptr_get (b->symtree->n.sym->backend_decl); condb = fold_build2_loc (input_location, NE_EXPR, logical_type_node, tmp, build_int_cst (TREE_TYPE (tmp), 0)); } (same for a above). This looks at the backend_decl only, without following the reference in some way. Here is what the backend_decl looks like: (gdb) call debug_tree(b->symtree->n.sym->backend_decl) <var_decl 0x7ffff7feec60 y type <record_type 0x7ffff73625e8 t2 BLK size <integer_cst 0x7ffff7195ed0 constant 256> unit-size <integer_cst 0x7ffff7195fc0 constant 32> align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type 0x7ffff73625e8 fields <field_decl 0x7ffff7360a18 n type <integer_type 0x7ffff71aa5e8 integer(kind=4)> SI a.f90:5:0 size <integer_cst 0x7ffff7195db0 constant 32> unit-size <integer_cst 0x7ffff7195dc8 constant 4> align:32 warn_if_not_align:0 offset_align 128 offset <integer_cst 0x7ffff7195ba0 constant 0> bit-offset <integer_cst 0x7ffff7195be8 constant 0> context <record_type 0x7ffff73625e8 t2> chain <field_decl 0x7ffff7360ab0 a>> chain <type_decl 0x7ffff7360b48 D.3871>> used static BLK a.f90:9:0 size <integer_cst 0x7ffff7195ed0 256> unit-size <integer_cst 0x7ffff7195fc0 32> align:64 warn_if_not_align:0 context <function_decl 0x7ffff735f700 p> initial <constructor 0x7ffff7355bb8> chain <var_decl 0x7ffff7feebd0 x>> not that I can really read what this is, or what it should be :-|