Commit e8c30b5f by Paul Thomas

[multiple changes]

2007-02-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30554
	* module.c (read_module): Set pointer_info to referenced if the
	symbol has no namespace.

2007-02-12  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30554
	* gfortran.dg/used_dummy_types_7.f90: New test.

From-SVN: r121865
parent 8ea6dfae
2007-02-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30554
* module.c (read_module): Set pointer_info to referenced if the
symbol has no namespace.
2007-02-12 Nick Clifton <nickc@redhat.com>
* lang.opt: Add Warning attribute to warning options.
......
......@@ -3339,7 +3339,7 @@ read_module (void)
char name[GFC_MAX_SYMBOL_LEN + 1];
gfc_intrinsic_op i;
int ambiguous, j, nuse, symbol;
pointer_info *info;
pointer_info *info, *q;
gfc_use_rename *u;
gfc_symtree *st;
gfc_symbol *sym;
......@@ -3390,6 +3390,16 @@ read_module (void)
info->u.rsym.state = USED;
info->u.rsym.sym = sym;
/* Some symbols do not have a namespace (eg. formal arguments),
so the automatic "unique symtree" mechanism must be suppressed
by marking them as referenced. */
q = get_integer (info->u.rsym.ns);
if (q->u.pointer == NULL)
{
info->u.rsym.referenced = 1;
continue;
}
/* If possible recycle the symtree that references the symbol.
If a symtree is not found and the module does not import one,
a unique-name symtree is found by read_cleanup. */
......
2007-02-12 Simon Martin <simartin@users.sourceforge.net>
2007-02-13 Paul Thomas <pault@gcc.gnu.org>
PR c++/14622
* g++.dg/template/instantiate9.C: New test.
* g++.old-deja/g++.pt/instantiate12.C: Fixed type mismatches in explicit
instantiations.
PR fortran/30554
* gfortran.dg/used_dummy_types_7.f90: New test..
2007-02-12 Uros Bizjak <ubizjak@gmail.com>
! { dg-do compile }
! This tests a patch for a regression caused by the second part of
! the fix for PR30554. The linked derived types dummy_atom and
! dummy_atom_list caused a segment fault because they do not have
! a namespace.
!
! Contributed by Daniel Franke <franke.daniel@gmail.com>
!
MODULE types
TYPE :: dummy_atom_list
TYPE(dummy_atom), DIMENSION(:), POINTER :: table => null()
END TYPE
TYPE :: dummy_atom
TYPE(dummy_atom_private), POINTER :: p => null()
END TYPE
TYPE :: dummy_atom_private
INTEGER :: id
END TYPE
END MODULE
MODULE atom
USE types, ONLY: dummy_atom
INTERFACE
SUBROUTINE dummy_atom_insert_symmetry_mate(this, other)
USE types, ONLY: dummy_atom
TYPE(dummy_atom), INTENT(inout) :: this
TYPE(dummy_atom), INTENT(in) :: other
END SUBROUTINE
END INTERFACE
END MODULE
MODULE list
INTERFACE
SUBROUTINE dummy_atom_list_insert(this, atom)
USE types, ONLY: dummy_atom_list
USE atom, ONLY: dummy_atom
TYPE(dummy_atom_list), INTENT(inout) :: this
TYPE(dummy_atom), INTENT(in) :: atom
END SUBROUTINE
END INTERFACE
END MODULE
! { dg-final { cleanup-modules "atom types list" } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment