mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-05 18:43:52 +08:00
re PR fortran/30554 ([4.1 only] ICE in mio_pointer_ref at module.c:1945)
2007-01-29 Paul Thomas <pault@gcc.gnu.org> PR fortran/30554 * module.c (read_module): If a symbol is excluded by an ONLY clause, check to see if there is a symtree already loaded. If so, attach the symtree to the pointer_info. 2007-01-29 Paul Thomas <pault@gcc.gnu.org> PR fortran/30554 * gfortran.dg/used_dummy_types_6.f90: New test. From-SVN: r121281
This commit is contained in:
parent
098b68ad53
commit
aec78e730e
@ -1,3 +1,10 @@
|
||||
2007-01-29 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/30554
|
||||
* module.c (read_module): If a symbol is excluded by an ONLY
|
||||
clause, check to see if there is a symtree already loaded. If
|
||||
so, attach the symtree to the pointer_info.
|
||||
|
||||
2007-01-28 Thomas Koenig <Thomas.Koenig@online.de>
|
||||
|
||||
PR libfortran/30389
|
||||
|
@ -3394,15 +3394,22 @@ read_module (void)
|
||||
/* Get the jth local name for this symbol. */
|
||||
p = find_use_name_n (name, &j);
|
||||
|
||||
/* Skip symtree nodes not in an ONLY clause. */
|
||||
/* Skip symtree nodes not in an ONLY clause, unless there
|
||||
is an existing symtree loaded from another USE
|
||||
statement. */
|
||||
if (p == NULL)
|
||||
continue;
|
||||
{
|
||||
st = gfc_find_symtree (gfc_current_ns->sym_root, name);
|
||||
if (st != NULL)
|
||||
info->u.rsym.symtree = st;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Check for ambiguous symbols. */
|
||||
st = gfc_find_symtree (gfc_current_ns->sym_root, p);
|
||||
|
||||
if (st != NULL)
|
||||
{
|
||||
/* Check for ambiguous symbols. */
|
||||
if (st->n.sym != info->u.rsym.sym)
|
||||
st->ambiguous = 1;
|
||||
info->u.rsym.symtree = st;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2007-01-29 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/30554
|
||||
* gfortran.dg/used_dummy_types_6.f90: New test.
|
||||
|
||||
2007-01-28 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* gcc.dg/tree-prof/val-prof-6.c: New test.
|
||||
|
25
gcc/testsuite/gfortran.dg/used_dummy_types_6.f90
Normal file
25
gcc/testsuite/gfortran.dg/used_dummy_types_6.f90
Normal file
@ -0,0 +1,25 @@
|
||||
! { dg-do compile }
|
||||
! Tests the fix for PR30554, the USE statements in potential_energy
|
||||
! would cause a segfault because the pointer_info for nfree coming
|
||||
! from constraint would not find the existing symtree coming directly
|
||||
! from atom.
|
||||
!
|
||||
! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
|
||||
|
||||
MODULE ATOMS
|
||||
INTEGER :: NFREE = 0
|
||||
END MODULE ATOMS
|
||||
|
||||
MODULE CONSTRAINT
|
||||
USE ATOMS, ONLY: NFREE
|
||||
CONTAINS
|
||||
SUBROUTINE ENERGY_CONSTRAINT ( HESSIAN )
|
||||
REAL , DIMENSION(1:(3*NFREE*(3*NFREE+1))/2):: HESSIAN
|
||||
END SUBROUTINE ENERGY_CONSTRAINT
|
||||
END MODULE CONSTRAINT
|
||||
|
||||
MODULE POTENTIAL_ENERGY
|
||||
USE ATOMS
|
||||
USE CONSTRAINT, ONLY : ENERGY_CONSTRAINT
|
||||
END MODULE POTENTIAL_ENERGY
|
||||
! { dg-final { cleanup-modules "atoms constraint potential_energy" } }
|
Loading…
Reference in New Issue
Block a user