2017-11-19 Paul Thomas <pault@gcc.gnu.org>
commit9ead5324140eecf1395ea40f9864c7b416c0be97
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 19 Nov 2017 19:50:50 +0000 (19 19:50 +0000)
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 19 Nov 2017 19:50:50 +0000 (19 19:50 +0000)
tree40b3d92cc98089c0203d785b23eff11fa4d4902b
parente1364c656c8d7beeab20c5f652b75ee5e4da1778
2017-11-19  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78990
* expr.c (gfc_is_class_array_function): Renamed from
'gfc_is_alloc_class_array_function' and modified to return true
for pointers as well as allocatable results.
* gfortran.h : Change of name for prototype of above function.
* trans-array.c (gfc_add_loop_ss_code): Force finalization of
class array results.
(build_class_array_ref): Change assertion into a condition.
(build_class_array_ref): Set the se class_vptr for class array
function results.
(gfc_walk_function_expr): Reference gfc_is_class_array_function
as above.
* trans-decl.c (get_proc_result): Move it up before
gfc_trans_deferred_vars.
(gfc_trans_deferred_vars): Nullify explicit return class arrays
on entry.
* trans-expr.c (gfc_conv_class_to_class): Allow conversion of
class array functions that have an se class_vptr and use it
for the result vptr.
(gfc_conv_subref_array_arg): Rename reference to the above
function.
(gfc_conv_procedure_call): Ditto. Add the se pre block to the
loop pre block before the function is evaluated. Do not
finalize class pointer results.
(arrayfunc_assign_needs_temporary, gfc_trans_assignment_1) More
renamed references.
* trans-intrinsic.c (gfc_conv_intrinsic_size): Ditto.

2017-11-19  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/78990
* gfortran.dg/class_67.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254936 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/fortran/ChangeLog
gcc/fortran/expr.c
gcc/fortran/gfortran.h
gcc/fortran/resolve.c
gcc/fortran/trans-array.c
gcc/fortran/trans-decl.c
gcc/fortran/trans-expr.c
gcc/fortran/trans-intrinsic.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/class_67.f90 [new file with mode: 0644]