aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2009-12-12 00:05:02 +0100
committerJanus Weil <janus@gcc.gnu.org>2009-12-12 00:05:02 +0100
commit44e3a58e929c753a67dc0bf4bc2543c0b5ead63a (patch)
tree476556bba7c033b2a5ac3140215facea534d7d29 /gcc
parent7780688fb8a9c07c662f975a19b463e1bd2cec7b (diff)
downloadgcc-44e3a58e929c753a67dc0bf4bc2543c0b5ead63a.zip
gcc-44e3a58e929c753a67dc0bf4bc2543c0b5ead63a.tar.gz
gcc-44e3a58e929c753a67dc0bf4bc2543c0b5ead63a.tar.bz2
re PR fortran/42257 ([OOP] Compiler segmentation fault due missing public statement)
gcc/fortran/ 2009-12-11 Janus Weil <janus@gcc.gnu.org> PR fortran/42257 * module.c (write_dt_extensions): Check for accessibility. gcc/testsuite/ 2009-12-11 Janus Weil <janus@gcc.gnu.org> PR fortran/42257 * gfortran.dg/extends_9.f03: New test. From-SVN: r155183
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/module.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/extends_9.f0336
4 files changed, 50 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 21c6154..4fd3ff0 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-11 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42257
+ * module.c (write_dt_extensions): Check for accessibility.
+
2009-12-11 Daniel Franke <franke.daniel@gmail.com>
PR fortran/40290
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index d732b66..81a2613 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -4670,6 +4670,10 @@ write_equiv (void)
static void
write_dt_extensions (gfc_symtree *st)
{
+ if (!gfc_check_access (st->n.sym->attr.access,
+ st->n.sym->ns->default_access))
+ return;
+
mio_lparen ();
mio_pool_string (&st->n.sym->name);
if (st->n.sym->module != NULL)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 92163b3..e2696ad 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-11 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42257
+ * gfortran.dg/extends_9.f03: New test.
+
2009-12-11 Jason Merrill <jason@redhat.com>
PR c++/42219
diff --git a/gcc/testsuite/gfortran.dg/extends_9.f03 b/gcc/testsuite/gfortran.dg/extends_9.f03
new file mode 100644
index 0000000..f59b973
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/extends_9.f03
@@ -0,0 +1,36 @@
+! { dg-do compile }
+!
+! PR42257: [OOP] Compiler segmentation fault due missing public statement
+!
+! Contributed by Oystein Olsen <oystein.olsen@astro.uio.no>
+
+MODULE run_example_fortran03
+ IMPLICIT NONE
+ PRIVATE
+ PUBLIC :: epoch
+
+ INTEGER, PARAMETER :: I4B = SELECTED_INT_KIND(9)
+ INTEGER, PARAMETER :: DP = SELECTED_REAL_KIND(15,307)
+
+ TYPE epoch
+ INTEGER(I4B) :: i = 2451545
+ REAL(DP) :: f = 0.5_DP
+ END TYPE
+
+ TYPE, EXTENDS(epoch) :: time
+ REAL(DP) :: t = 0.0_DP
+ END TYPE
+END MODULE
+
+
+ USE run_example_fortran03
+ IMPLICIT NONE
+
+ CLASS(epoch), ALLOCATABLE :: e4
+
+ ALLOCATE(epoch::e4)
+ WRITE(*,*) e4%i, e4%f
+
+END
+
+! { dg-final { cleanup-modules "run_example_fortran03" } }