diff options
author | Janus Weil <janus@gcc.gnu.org> | 2009-12-12 00:05:02 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2009-12-12 00:05:02 +0100 |
commit | 44e3a58e929c753a67dc0bf4bc2543c0b5ead63a (patch) | |
tree | 476556bba7c033b2a5ac3140215facea534d7d29 /gcc | |
parent | 7780688fb8a9c07c662f975a19b463e1bd2cec7b (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/module.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/extends_9.f03 | 36 |
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" } } |