re PR fortran/83611 ([PDT] Assignment of parameterized types causes double free error...
[gcc.git] / gcc / fortran / decl.c
index a944e4f721fa6d6508148e8bbf7249134b66a4cf..cb235343962964585a74abd94027f7cf35fbc8ce 100644 (file)
@@ -3562,6 +3562,12 @@ gfc_get_pdt_instance (gfc_actual_arglist *param_list, gfc_symbol **sym,
              c2->as->upper[i] = e;
            }
          c2->attr.pdt_array = pdt_array ? 1 : c2->attr.pdt_string;
+         if (c1->initializer)
+           {
+             c2->initializer = gfc_copy_expr (c1->initializer);
+             gfc_insert_kind_parameter_exprs (c2->initializer);
+             gfc_simplify_expr (c2->initializer, 1);
+           }
        }
 
       /* Recurse into this function for PDT components.  */