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

Reply via email to