From b8ac4f3b22887143eec7e51497e95ff7301631df Mon Sep 17 00:00:00 2001 From: Andre Vehreschild Date: Sun, 25 Oct 2015 13:28:57 +0100 Subject: re PR fortran/66927 (ICE in gfc_conf_procedure_call) gcc/fortran/ChangeLog: 2015-10-25 Andre Vehreschild PR fortran/66927 PR fortran/67044 * trans-array.c (build_array_ref): Modified call to gfc_get_class_array_ref to adhere to new interface. (gfc_conv_expr_descriptor): For one-based arrays that are filled by a loop starting at one the start index of the source array has to be mangled into the offset. * trans-expr.c (gfc_get_class_array_ref): When the tree to get the _data component is present already, add a way to supply it. (gfc_copy_class_to_class): Allow to copy to a derived type also. * trans-stmt.c (gfc_trans_allocate): Do not conv_expr_descriptor for functions returning a class or derived object. Get the reference instead. * trans.h: Interface change of gfc_get_class_array_ref. gcc/testsuite/ChangeLog: 2015-10-25 Andre Vehreschild PR fortran/66927 PR fortran/67044 * gfortran.dg/allocate_with_source_10.f08: New test. * gfortran.dg/allocate_with_source_11.f08: New test. * gfortran.dg/class_array_15.f03: Changed count of expected _builtin_frees to 11. One step of temporaries is spared, therefore the allocatable component of that temporary is not to be freeed. From-SVN: r229294 --- gcc/fortran/trans.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc/fortran/trans.h') diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h index 2501403..3a23a3c 100644 --- a/gcc/fortran/trans.h +++ b/gcc/fortran/trans.h @@ -378,7 +378,7 @@ tree gfc_vptr_final_get (tree); void gfc_reset_vptr (stmtblock_t *, gfc_expr *); void gfc_reset_len (stmtblock_t *, gfc_expr *); tree gfc_get_vptr_from_expr (tree); -tree gfc_get_class_array_ref (tree, tree); +tree gfc_get_class_array_ref (tree, tree, tree); tree gfc_copy_class_to_class (tree, tree, tree, bool); bool gfc_add_finalizer_call (stmtblock_t *, gfc_expr *); bool gfc_add_comp_finalizer_call (stmtblock_t *, tree, gfc_component *, bool); -- cgit v1.1