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
This commit is contained in:
Janus Weil 2009-12-12 00:05:02 +01:00
parent 7780688fb8
commit 44e3a58e92
4 changed files with 50 additions and 0 deletions

View File

@ -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> 2009-12-11 Daniel Franke <franke.daniel@gmail.com>
PR fortran/40290 PR fortran/40290

View File

@ -4670,6 +4670,10 @@ write_equiv (void)
static void static void
write_dt_extensions (gfc_symtree *st) 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_lparen ();
mio_pool_string (&st->n.sym->name); mio_pool_string (&st->n.sym->name);
if (st->n.sym->module != NULL) if (st->n.sym->module != NULL)

View File

@ -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> 2009-12-11 Jason Merrill <jason@redhat.com>
PR c++/42219 PR c++/42219

View File

@ -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" } }