aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/decl.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/der_pointer_4.f9011
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 (&current_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