diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/decl.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/der_pointer_4.f90 | 11 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index be1b909..51178f2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2005-10-22 Erik Edelmann <eedelman@gcc.gnu.org> + + PR fortran/24426 + * decl.c (variable_decl): Don't assign default initializers to + pointers. + 2005-10-21 Jakub Jelinek <jakub@redhat.com> * interface.c (compare_actual_formal): Issue error when attempting diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 21f1089..7a605d6 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 ef1d49c..6dbf511 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-10-22 Erik Edelmann <eedelman@gcc.gnu.org> + + PR fortran/24426 + * gfortran.dg/der_pointer_4.f90: New. + 2005-10-22 David Ayers <d.ayers@inode.at> * 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 0000000..6bc499d --- /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 |