diff options
author | GCC Administrator <gccadmin@gcc.gnu.org> | 2020-12-19 00:16:31 +0000 |
---|---|---|
committer | GCC Administrator <gccadmin@gcc.gnu.org> | 2020-12-19 00:16:31 +0000 |
commit | b1a2242e24fe984711214b7546cb993cfe45ace8 (patch) | |
tree | eb557a5f91548377314a4be2bfe6c0ad3fa4c3a8 /gcc/fortran | |
parent | 5128f8d0d99008d4f069bbaef9ee4372fe5da7ce (diff) | |
download | gcc-b1a2242e24fe984711214b7546cb993cfe45ace8.zip gcc-b1a2242e24fe984711214b7546cb993cfe45ace8.tar.gz gcc-b1a2242e24fe984711214b7546cb993cfe45ace8.tar.bz2 |
Daily bump.
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ef7aa44..3675024 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,48 @@ +2020-12-18 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/83118 + PR fortran/96012 + * resolve.c (resolve_ordinary_assign): Generate a vtable if + necessary for scalar non-polymorphic rhs's to unlimited lhs's. + * trans-array.c (get_class_info_from_ss): New function. + (gfc_trans_allocate_array_storage): Defer obtaining class + element type until all sources of class exprs are tried. Use + class API rather than TREE_OPERAND. Look for class expressions + in ss->info by calling get_class_info_from_ss. After, obtain + the element size for class descriptors. Where the element type + is unknown, cast the data as character(len=size) to overcome + unlimited polymorphic problems. + (gfc_conv_ss_descriptor): Do not fix class variable refs. + (build_class_array_ref, structure_alloc_comps): Replace code + replicating the new function gfc_resize_class_size_with_len. + (gfc_alloc_allocatable_for_assignment): Obtain element size + for lhs in cases of deferred characters and class enitities. + Move code for the element size of rhs to start of block. Clean + up extraction of class parameters throughout this function. + After the shape check test whether or not the lhs and rhs + element sizes are the same. Use earlier evaluation of + 'cond_null'. Reallocation of lhs only to happen if size changes + or element size changes. + * trans-expr.c (gfc_resize_class_size_with_len): New function. + (gfc_get_class_from_expr): If a constant expression is + encountered, return NULL_TREE; + (trans_scalar_class_assign): New function. + (gfc_conv_procedure_call): Ensure the vtable is present for + passing a non-class actual to an unlimited formal. + (trans_class_vptr_len_assignment): For expressions of type + BT_CLASS, extract the class expression if necessary. Use a + statement block outside the loop body. Ensure that 'rhs' is + of the correct type. Obtain rhs vptr in all circumstances. + (gfc_trans_scalar_assign): Call trans_scalar_class_assign to + make maximum use of the vptr copy in place of assignment. + (trans_class_assignment): Actually do reallocation if needed. + (gfc_trans_assignment_1): Simplify some of the logic with + 'realloc_flag'. Set 'vptr_copy' for all array assignments to + unlimited polymorphic lhs. + * trans.c (gfc_build_array_ref): Call gfc_resize_class_size_ + with_len to correct span for unlimited polymorphic decls. + * trans.h : Add prototype for gfc_resize_class_size_with_len. + 2020-12-17 Tobias Burnus <tobias@codesourcery.com> PR fortran/92587 |