From 6019a1a447626909b671b617003d4b259872a950 Mon Sep 17 00:00:00 2001 From: Erik Edelmann Date: Sat, 22 Oct 2005 17:02:42 +0000 Subject: [PATCH] re PR fortran/24426 (gfortran ICE for valid derived type definition with default initialization) 2005-10-22 Erik Edelmann PR fortran/24426 * decl.c (variable_decl): Don't assign default initializers to pointers. 2005-10-22 Erik Edelmann PR fortran/24426 * gfortran.dg/der_pointer_4.f90: New. From-SVN: r105792 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/decl.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/der_pointer_4.f90 | 11 +++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/der_pointer_4.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index be1b9098e5f..51178f26189 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2005-10-22 Erik Edelmann + + PR fortran/24426 + * decl.c (variable_decl): Don't assign default initializers to + pointers. + 2005-10-21 Jakub Jelinek * interface.c (compare_actual_formal): Issue error when attempting diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 21f1089e42d..7a605d6799d 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1094,7 +1094,7 @@ variable_decl (int elem) t = add_init_expr_to_sym (name, &initializer, &var_locus); else { - if (current_ts.type == BT_DERIVED && !initializer) + if (current_ts.type == BT_DERIVED && !current_attr.pointer && !initializer) initializer = gfc_default_initializer (¤t_ts); t = build_struct (name, cl, &initializer, &as); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ef1d49c3023..6dbf511f036 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-10-22 Erik Edelmann + + PR fortran/24426 + * gfortran.dg/der_pointer_4.f90: New. + 2005-10-22 David Ayers * obj-c++.dg/except-1.mm: Simplify. diff --git a/gcc/testsuite/gfortran.dg/der_pointer_4.f90 b/gcc/testsuite/gfortran.dg/der_pointer_4.f90 new file mode 100644 index 00000000000..6bc499dbab7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/der_pointer_4.f90 @@ -0,0 +1,11 @@ +! {dg-do compile } +! PR 24426 +! Pointer-components of derived type with initialized components +module crash + implicit none + type foo + integer :: i = 0 + type (foo), pointer :: next + end type foo + type (foo) :: bar +end module crash -- 2.30.2