re PR fortran/46838 ([OOP] Initialization of polymorphic allocatable components)
2010-12-29 Janus Weil <janus@gcc.gnu.org> PR fortran/46838 * expr.c (gfc_default_initializer): Handle allocatable CLASS components. 2010-12-29 Janus Weil <janus@gcc.gnu.org> PR fortran/46838 * gfortran.dg/alloc_comp_class_2.f90: New. From-SVN: r168322
This commit is contained in:
parent
bc81f55980
commit
fbd30c381c
4 changed files with 43 additions and 2 deletions
|
@ -1,3 +1,8 @@
|
|||
2010-12-29 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/46838
|
||||
* expr.c (gfc_default_initializer): Handle allocatable CLASS components.
|
||||
|
||||
2010-12-29 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
* frontend-passes.c (gfc_code_walker): Handle expressions
|
||||
|
|
|
@ -3648,7 +3648,8 @@ gfc_default_initializer (gfc_typespec *ts)
|
|||
/* See if we have a default initializer in this, but not in nested
|
||||
types (otherwise we could use gfc_has_default_initializer()). */
|
||||
for (comp = ts->u.derived->components; comp; comp = comp->next)
|
||||
if (comp->initializer || comp->attr.allocatable)
|
||||
if (comp->initializer || comp->attr.allocatable
|
||||
|| (comp->ts.type == BT_CLASS && CLASS_DATA (comp)->attr.allocatable))
|
||||
break;
|
||||
|
||||
if (!comp)
|
||||
|
@ -3665,7 +3666,8 @@ gfc_default_initializer (gfc_typespec *ts)
|
|||
if (comp->initializer)
|
||||
ctor->expr = gfc_copy_expr (comp->initializer);
|
||||
|
||||
if (comp->attr.allocatable)
|
||||
if (comp->attr.allocatable
|
||||
|| (comp->ts.type == BT_CLASS && CLASS_DATA (comp)->attr.allocatable))
|
||||
{
|
||||
ctor->expr = gfc_get_expr ();
|
||||
ctor->expr->expr_type = EXPR_NULL;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2010-12-29 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/46838
|
||||
* gfortran.dg/alloc_comp_class_2.f90: New.
|
||||
|
||||
2010-12-29 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
* gfortran.dg/character_comparison_7.f90: New test.
|
||||
|
|
29
gcc/testsuite/gfortran.dg/alloc_comp_class_2.f90
Normal file
29
gcc/testsuite/gfortran.dg/alloc_comp_class_2.f90
Normal file
|
@ -0,0 +1,29 @@
|
|||
! { dg-do run }
|
||||
!
|
||||
! PR 46838: [OOP] Initialization of polymorphic allocatable components
|
||||
!
|
||||
! Contributed by Salvatore Filippone <sfilippone@uniroma2.it>
|
||||
|
||||
program bug28
|
||||
|
||||
implicit none
|
||||
|
||||
type indx_map
|
||||
end type
|
||||
|
||||
type desc_type
|
||||
integer, allocatable :: matrix_data
|
||||
class(indx_map), allocatable :: indxmap
|
||||
end type
|
||||
|
||||
type(desc_type) :: desc_a
|
||||
call cdall(desc_a)
|
||||
|
||||
contains
|
||||
|
||||
subroutine cdall(desc)
|
||||
type(desc_type), intent(out) :: desc
|
||||
if (allocated(desc%indxmap)) call abort()
|
||||
end subroutine cdall
|
||||
|
||||
end program
|
Loading…
Add table
Reference in a new issue