From 630b7086421bdad457891f752a76ba84b30d593d Mon Sep 17 00:00:00 2001 From: Erik Edelmann Date: Sun, 18 Sep 2005 08:50:04 +0300 Subject: [PATCH] re PR fortran/15975 ([4.0 only] ICE in trans-array.c pointer array initialization stuff) 2005-09-18 Erik Edelmann PR fortran/15975 * resolve.c (resolve_symbol): Don't assign default initializer to pointers. 2005-09-18 Erik Edelmann PR fortran/15975 * gfortran.dg/der_pointer_2.f90: New test. From-SVN: r104389 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/resolve.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/der_pointer_2.f90 | 20 ++++++++++++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/der_pointer_2.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index ca4a80d83e9..0863e275ef2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2005-09-18 Erik Edelmann + + PR fortran/15975 + * resolve.c (resolve_symbol): Don't assign default + initializer to pointers. + 2005-09-18 Paul Thomas PR fortran/16861 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index f9413336f53..e342a1e8d57 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -4328,7 +4328,8 @@ resolve_symbol (gfc_symbol * sym) } /* Assign default initializer. */ - if (sym->ts.type == BT_DERIVED && !(sym->value || whynot)) + if (sym->ts.type == BT_DERIVED && !(sym->value || whynot) + && !sym->attr.pointer) sym->value = gfc_default_initializer (&sym->ts); break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c60cb5587aa..4424bd8ec92 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-09-18 Erik Edelmann + + PR fortran/15975 + * gfortran.dg/der_pointer_2.f90: New test. + 2005-09-18 Paul Thomas PR fortran/16861 diff --git a/gcc/testsuite/gfortran.dg/der_pointer_2.f90 b/gcc/testsuite/gfortran.dg/der_pointer_2.f90 new file mode 100644 index 00000000000..3749fc24ff8 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/der_pointer_2.f90 @@ -0,0 +1,20 @@ +! { dg-do compile } +! PR 15975, PR 16606 +! Pointers to derived types with initialized components +! +! Contributed by Erik Edelmann +! +SUBROUTINE N + TYPE T + INTEGER :: I = 99 + END TYPE T + TYPE(T), POINTER :: P + TYPE(T), TARGET :: Q + P => Q + if (P%I.ne.99) call abort () +END SUBROUTINE N + +program test_pr15975 + call n () +end program test_pr15975 +