https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70937
--- Comment #7 from Dominique d'Humieres <dominiq at lps dot ens.fr> --- The ICEs are gone with the patch --- ../_clean/gcc/fortran/trans-decl.c 2016-03-28 13:03:29.000000000 +0200 +++ ../p_work/gcc/fortran/trans-decl.c 2016-05-04 16:13:21.000000000 +0200 @@ -6013,6 +6013,29 @@ finish_oacc_declare (gfc_namespace *ns, } +static stmtblock_t *place_decl_expr_init; +static void +place_decl_expr (gfc_symbol *sym) +{ + if (sym->backend_decl) + { + tree type = sym->backend_decl; + if (DECL_P (sym->backend_decl)) + type = TREE_TYPE (type); + else + gcc_assert (TYPE_P (type)); + while (POINTER_TYPE_P (type)) + type = TREE_TYPE (type); + if (variably_modified_type_p (type, NULL)) + { + if (TYPE_NAME (type)) + gfc_add_expr_to_block (place_decl_expr_init, + build1 (DECL_EXPR, type, TYPE_NAME (type))); + } + } +} + + /* Generate code for a function. */ void @@ -6088,6 +6111,9 @@ gfc_generate_function_code (gfc_namespac has_coarray_vars = false; generate_local_vars (ns); + place_decl_expr_init = &init; + gfc_traverse_ns (ns, place_decl_expr); + if (flag_coarray == GFC_FCOARRAY_LIB && has_coarray_vars) generate_coarray_init (ns); However, I see several execution failures: FAIL: gfortran.dg/array_constructor_type_7.f03 -Oxx execution test where xx depends on -m32/-m64 FAIL: gfortran.dg/auto_char_dummy_array_1.f90 -O* execution test FAIL: gfortran.dg/namelist_70.f90 -O* execution test FAIL: gfortran.dg/string_ctor_1.f90 -Oxx execution test where xx depends on -m32/-m64 FAIL: libgomp.fortran/task2.f90 -O execution test FAIL: libgomp.fortran/vla*.f90 -O* execution test