aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Edelmann <eedelman@gcc.gnu.org>2005-10-22 17:02:42 +0000
committerErik Edelmann <eedelman@gcc.gnu.org>2005-10-22 17:02:42 +0000
commit6019a1a447626909b671b617003d4b259872a950 (patch)
tree907681fadb91f7e08c1c9b66644c93467088e0db
parente7c84bf8e9064b10e11d77e3a9161b9e9534315c (diff)
downloadgcc-6019a1a447626909b671b617003d4b259872a950.zip
gcc-6019a1a447626909b671b617003d4b259872a950.tar.gz
gcc-6019a1a447626909b671b617003d4b259872a950.tar.bz2
re PR fortran/24426 (gfortran ICE for valid derived type definition with default initialization)
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-22 Erik Edelmann <eedelman@gcc.gnu.org> PR fortran/24426 * gfortran.dg/der_pointer_4.f90: New. From-SVN: r105792
-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