https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60322

--- Comment #8 from vehre at gcc dot gnu.org ---
Author: vehre
Date: Thu Apr 23 11:32:00 2015
New Revision: 222361

URL: https://gcc.gnu.org/viewcvs?rev=222361&root=gcc&view=rev
Log:
gcc/testsuite/ChangeLog:

2015-04-23  Andre Vehreschild  <ve...@gmx.de>

    PF fortran/60322
    * gfortran.dg/class_allocate_19.f03: New test.
    * gfortran.dg/class_array_20.f03: New test.
    * gfortran.dg/class_array_21.f03: New test.
    * gfortran.dg/finalize_10.f90: Corrected scan-trees.
    * gfortran.dg/finalize_15.f90: Fixing comparision to model
    initialization correctly.
    * gfortran.dg/finalize_29.f08: New test.


gcc/fortran/ChangeLog:

2015-04-23  Andre Vehreschild  <ve...@gmx.de>

    PR fortran/60322
    * expr.c (gfc_lval_expr_from_sym): Code to select the regular
    or class array added.
    * gfortran.h: Add IS_CLASS_ARRAY macro.
    * trans-array.c (gfc_add_loop_ss_code): Treat class objects
    to be referenced always.
    (build_class_array_ref): Adapt retrieval of array descriptor.
    (build_array_ref): Likewise.
    (gfc_conv_array_ref): Hand the vptr or the descriptor to 
    build_array_ref depending whether the sym is class or not.
    (gfc_trans_array_cobounds):  Select correct gfc_array_spec for
    regular and class arrays.
    (gfc_trans_array_bounds): Likewise.
    (gfc_trans_dummy_array_bias): Likewise. 
    (gfc_get_dataptr_offset): Correcting call of build_array_ref.
    (gfc_conv_expr_descriptor): Set the array's offset to -1 when
    lbound in inner most dim is 1 and symbol non-pointer/assoc.
    * trans-decl.c (gfc_build_qualified_array): Select correct
    gfc_array_spec for regular and class arrays.
    (gfc_build_dummy_array_decl): Likewise.
    (gfc_get_symbol_decl): Get a dummy array for class arrays.
    (gfc_trans_deferred_vars): Tell conv_expr that the descriptor
    is desired.
    * trans-expr.c (gfc_class_vptr_get): Get the class descriptor
    from the correct location for class arrays.
    (gfc_class_len_get): Likewise.
    (gfc_conv_intrinsic_to_class): Add handling of _len component.
    (gfc_conv_class_to_class):  Prevent access to unset array data
    when the array is an optional argument. Add handling of _len
    component.
    (gfc_copy_class_to_class): Check that _def_init is non-NULL
    when used in _vptr->copy()
    (gfc_trans_class_init_assign): Ensure that the rank of
    _def_init is zero.
    (gfc_conv_component_ref): Get the _vptr along with _data refs.
    (gfc_conv_variable): Make sure the temp array descriptor is
    returned for class arrays, too, and that class arrays are
    dereferenced correctly.
    (gfc_conv_procedure_call): For polymorphic type initialization
    the initializer has to be a pointer to _def_init stored in a
    dummy variable, which then needs to be used by value.
    * trans-intrinsic.c (gfc_conv_intrinsic_sizeof): Use the
    temporary array descriptor for class arrays, too.
    (gfc_conv_intrinsic_storage_size): Likewise.
    (gfc_conv_intrinsic_loc): Add ref to _data for BT_CLASS
    expressions.
    * trans-stmt.c (trans_associate_var): Use a temporary array for
    the associate variable of class arrays, too, making the array
    one-based (lbound == 1).
    * trans-types.c (gfc_is_nodesc_array): Use the correct
    array data.
    * trans.c (gfc_build_array_ref): Use the dummy array descriptor
    when present.
    * trans.h: Add class_vptr to gfc_se for storing a class ref's
    vptr.



Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/expr.c
    trunk/gcc/fortran/gfortran.h
    trunk/gcc/fortran/trans-array.c
    trunk/gcc/fortran/trans-decl.c
    trunk/gcc/fortran/trans-expr.c
    trunk/gcc/fortran/trans-intrinsic.c
    trunk/gcc/fortran/trans-stmt.c
    trunk/gcc/fortran/trans-types.c
    trunk/gcc/fortran/trans.c
    trunk/gcc/fortran/trans.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/finalize_10.f90
    trunk/gcc/testsuite/gfortran.dg/finalize_15.f90

Reply via email to