https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78746
--- Comment #10 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- > Both of the remaining testcases now compile for me. > Probably can close this PR. With my instrumented gfortran compiler I still see failures similar to the one reported in comment 2: pr78746.f90:5:39: character(:), allocatable :: x(n) ! { dg-error "must have a deferred shape" } 1 Error: Allocatable component of structure at (1) must have a deferred shape ================================================================= ==80385==ERROR: AddressSanitizer: heap-use-after-free on address 0x6040000010e8 at pc 0x0001003b3627 bp 0x7fff5fbfe530 sp 0x7fff5fbfe528 READ of size 8 at 0x6040000010e8 thread T0 #0 0x1003b3626 in gfc_resolve_expr(gfc_expr*) resolve.c:6736 #1 0x100015279 in resolve_array_bound(gfc_expr*, int) array.c:327 #2 0x10001bd19 in gfc_resolve_array_spec(gfc_array_spec*, int) array.c:368 #3 0x1003a7bdd in resolve_component(gfc_component*, gfc_symbol*) resolve.c:13920 #4 0x1003abfa1 in resolve_fl_derived0(gfc_symbol*) resolve.c:14039 #5 0x1003acbdb in resolve_fl_derived(gfc_symbol*) resolve.c:14134 #6 0x10039a977 in resolve_symbol(gfc_symbol*) resolve.c:14479 #7 0x10046c576 in do_traverse_symtree(gfc_symtree*, void (*)(gfc_symtree*), void (*)(gfc_symbol*)) symbol.c:4157 #8 0x10048a3a5 in gfc_traverse_ns(gfc_namespace*, void (*)(gfc_symbol*)) symbol.c:4182 #9 0x1004002ed in resolve_types(gfc_namespace*) resolve.c:16358 #10 0x100395fc9 in gfc_resolve(gfc_namespace*) resolve.c:16472 #11 0x1002feb25 in resolve_all_program_units(gfc_namespace*) parse.c:6030 #12 0x10031dc5f in gfc_parse_file() parse.c:6280 #13 0x1004d36b3 in gfc_be_parse_file() f95-lang.c:204 #14 0x1052de1b0 in compile_file() toplev.c:454 #15 0x1052e857d in do_compile() toplev.c:2059 #16 0x1075dd23b in toplev::main(int, char**) toplev.c:2194 #17 0x1075e2a87 in main main.c:39 #18 0x7fffcb057234 in start (libdyld.dylib:x86_64+0x5234) 0x6040000010e8 is located 24 bytes inside of 48-byte region [0x6040000010d0,0x604000001100) freed by thread T0 here: #0 0x1562efe10 in wrap_free.part.0 sanitizer_malloc_mac.inc:142 #1 0x100480732 in gfc_delete_symtree(gfc_symtree**, char const*) symbol.c:2927 #2 0x10049a7d4 in gfc_restore_last_undo_checkpoint() symbol.c:3694 #3 0x10049aa2c in gfc_undo_symbols() symbol.c:3727 #4 0x1002fefd5 in reject_statement() parse.c:2546 #5 0x1002ff11d in match_word(char const*, match (*)(), locus*) parse.c:70 #6 0x10030ba38 in decode_statement() parse.c:376 #7 0x10030e091 in next_free() parse.c:1225 #8 0x10030ea5e in next_statement() parse.c:1457 #9 0x100313af2 in parse_derived() parse.c:3255 #10 0x1003154d7 in parse_spec(gfc_statement) parse.c:3795 #11 0x10031b954 in parse_progunit(gfc_statement) parse.c:5637 #12 0x10031dc21 in gfc_parse_file() parse.c:6177 #13 0x1004d36b3 in gfc_be_parse_file() f95-lang.c:204 #14 0x1052de1b0 in compile_file() toplev.c:454 #15 0x1052e857d in do_compile() toplev.c:2059 #16 0x1075dd23b in toplev::main(int, char**) toplev.c:2194 #17 0x1075e2a87 in main main.c:39 #18 0x7fffcb057234 in start (libdyld.dylib:x86_64+0x5234) previously allocated by thread T0 here: #0 0x1562ef46c in wrap_calloc sanitizer_malloc_mac.inc:153 #1 0x10746b354 in xcalloc xmalloc.c:162 #2 0x1004803dd in gfc_new_symtree(gfc_symtree**, char const*) symbol.c:2897 #3 0x1004843d2 in gfc_get_sym_tree(char const*, gfc_namespace*, gfc_symtree**, bool) symbol.c:3356 #4 0x100490128 in gfc_get_ha_sym_tree(char const*, gfc_symtree**) symbol.c:3441 #5 0x100341f22 in gfc_match_rvalue(gfc_expr**) primary.c:3141 #6 0x100226505 in match_primary(gfc_expr**) matchexp.c:157 #7 0x100226794 in match_level_1(gfc_expr**) matchexp.c:211 #8 0x100226b09 in match_mult_operand(gfc_expr**) matchexp.c:267 #9 0x100227313 in match_add_operand(gfc_expr**) matchexp.c:356 #10 0x100227d00 in match_level_2(gfc_expr**) matchexp.c:480 #11 0x100228210 in match_level_3(gfc_expr**) matchexp.c:551 #12 0x100228689 in match_level_4(gfc_expr**) matchexp.c:599 #13 0x1002294bd in match_and_operand(gfc_expr**) matchexp.c:693 #14 0x10022978c in match_or_operand(gfc_expr**) matchexp.c:722 #15 0x100229bf1 in match_equiv_operand(gfc_expr**) matchexp.c:765 #16 0x10022a060 in match_level_5(gfc_expr**) matchexp.c:811 #17 0x100226029 in gfc_match_expr(gfc_expr**) matchexp.c:870 #18 0x1000192cc in match_array_element_spec(gfc_array_spec*) array.c:433 #19 0x10001ca3d in gfc_match_array_spec(gfc_array_spec**, bool, bool) array.c:528 #20 0x1000cf09c in variable_decl(int) decl.c:2256 #21 0x1000d2ab8 in gfc_match_data_decl() decl.c:5679 #22 0x1002ff09b in match_word(char const*, match (*)(), locus*) parse.c:65 #23 0x10030ba38 in decode_statement() parse.c:376 #24 0x10030e091 in next_free() parse.c:1225 #25 0x10030ea5e in next_statement() parse.c:1457 #26 0x100313af2 in parse_derived() parse.c:3255 #27 0x1003154d7 in parse_spec(gfc_statement) parse.c:3795 #28 0x10031b954 in parse_progunit(gfc_statement) parse.c:5637 #29 0x10031dc21 in gfc_parse_file() parse.c:6177 SUMMARY: AddressSanitizer: heap-use-after-free resolve.c:6736 in gfc_resolve_expr(gfc_expr*) Shadow bytes around the buggy address: 0x1c08000001c0: fa fa 00 00 00 00 00 00 fa fa 00 00 00 00 00 00 0x1c08000001d0: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd 0x1c08000001e0: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fa 0x1c08000001f0: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fa 0x1c0800000200: fa fa fd fd fd fd fd fa fa fa fd fd fd fd fd fa =>0x1c0800000210: fa fa 00 00 00 00 00 00 fa fa fd fd fd[fd]fd fd 0x1c0800000220: fa fa fd fd fd fd fd fa fa fa fd fd fd fd fd fd 0x1c0800000230: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd 0x1c0800000240: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fa 0x1c0800000250: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd 0x1c0800000260: fa fa fd fd fd fd fd fd fa fa fd fd fd fd fd fd Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb ==80385==ABORTING f951: internal compiler error: Abort trap: 6