From be318c4b7f1cec1818789b1eff0b077ee32a20a6 Mon Sep 17 00:00:00 2001 From: janus Date: Thu, 30 Sep 2010 19:54:08 +0000 Subject: [PATCH] 2010-09-30 Janus Weil PR fortran/45828 * resolve.c (resolve_allocate_expr): Do not use 'gfc_has_default_initializer'. 2010-09-30 Janus Weil PR fortran/45828 * gfortran.dg/allocate_derived_5.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164765 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/resolve.c | 4 ++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/allocate_derived_5.f90 | 20 ++++++++++++++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/allocate_derived_5.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 74a87f7fb3f..b618e7d75a8 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-09-30 Janus Weil + + PR fortran/45828 + * resolve.c (resolve_allocate_expr): Do not use + 'gfc_has_default_initializer'. + 2010-09-30 Tobias Burnus * gfortran.tex (Fortran 2008 status): Update list of diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 4958cbde185..60de8e591b3 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -6708,6 +6708,7 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code) { /* Set up default initializer if needed. */ gfc_typespec ts; + gfc_expr *init_e; if (code->ext.alloc.ts.type == BT_DERIVED) ts = code->ext.alloc.ts; @@ -6717,9 +6718,8 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code) if (ts.type == BT_CLASS) ts = ts.u.derived->components->ts; - if (ts.type == BT_DERIVED && gfc_has_default_initializer(ts.u.derived)) + if (ts.type == BT_DERIVED && (init_e = gfc_default_initializer (&ts))) { - gfc_expr *init_e = gfc_default_initializer (&ts); gfc_code *init_st = gfc_get_code (); init_st->loc = code->loc; init_st->op = EXEC_INIT_ASSIGN; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1775235b92d..71f97849ff0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-09-30 Janus Weil + + PR fortran/45828 + * gfortran.dg/allocate_derived_5.f90: New. + 2010-09-30 Jakub Jelinek PR tree-optimization/31261 diff --git a/gcc/testsuite/gfortran.dg/allocate_derived_5.f90 b/gcc/testsuite/gfortran.dg/allocate_derived_5.f90 new file mode 100644 index 00000000000..70d63aa1a46 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/allocate_derived_5.f90 @@ -0,0 +1,20 @@ +! { dg-do run } +! +! PR 45828: [4.6 Regression] No default initialization of derived type members? +! +! Contributed by Juha + +program fail1 + type a + integer :: i + end type a + + type b + type(a) :: acomp = a(5) + end type b + + type(b), allocatable :: c(:) + + allocate(c(1)) + if (c(1) % acomp % i /= 5) call abort() +end program fail1 -- 2.11.4.GIT