re PR fortran/34655 (5.5.2.5)
2008-01-06 Tobias Burnus <burnus@net-b.de> PR fortran/34655 * resolve.c (resolve_equivalence_derived): Reject derived types * with default initialization if equivalenced with COMMON variable. 2008-01-06 Tobias Burnus <burnus@net-b.de> PR fortran/34655 * gfortran.dg/equiv_constraint_9.f90: New. From-SVN: r131353
This commit is contained in:
parent
2c460d1291
commit
cddcf0d4ae
@ -1,3 +1,9 @@
|
||||
2008-01-06 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/34655
|
||||
* resolve.c (resolve_equivalence_derived): Reject derived types with
|
||||
default initialization if equivalenced with COMMON variable.
|
||||
|
||||
2008-01-06 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/34654
|
||||
|
@ -8534,6 +8534,14 @@ resolve_equivalence_derived (gfc_symbol *derived, gfc_symbol *sym, gfc_expr *e)
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
if (sym->attr.in_common && has_default_initializer (sym->ts.derived))
|
||||
{
|
||||
gfc_error ("Derived type variable '%s' at %L with default "
|
||||
"initialization cannot be in EQUIVALENCE with a variable "
|
||||
"in COMMON", sym->name, &e->where);
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
for (; c ; c = c->next)
|
||||
{
|
||||
d = c->ts.derived;
|
||||
|
@ -1,3 +1,8 @@
|
||||
2008-01-06 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/34655
|
||||
* gfortran.dg/equiv_constraint_9.f90: New.
|
||||
|
||||
2008-01-06 Revital Eres <eres@il.ibm.com>
|
||||
|
||||
PR tree-optimization/34263
|
||||
|
28
gcc/testsuite/gfortran.dg/equiv_constraint_9.f90
Normal file
28
gcc/testsuite/gfortran.dg/equiv_constraint_9.f90
Normal file
@ -0,0 +1,28 @@
|
||||
! { dg-do compile }
|
||||
!
|
||||
! PR fortran/34655
|
||||
!
|
||||
! Check for F2003's 5.5.2.5 Restrictions on common and equivalence
|
||||
! Test case contributed by Joost VandeVondele.
|
||||
!
|
||||
implicit none
|
||||
type data_type
|
||||
sequence
|
||||
integer :: I = 7
|
||||
end type data_type
|
||||
|
||||
|
||||
type data_type2
|
||||
sequence
|
||||
integer :: I
|
||||
end type data_type2
|
||||
|
||||
type(data_type) :: dd, ff
|
||||
type(data_type2) :: gg
|
||||
integer :: j, k, m
|
||||
EQUIVALENCE(dd,J) ! { dg-error "with default initializations cannot be in EQUIVALENCE with a variable in COMMON" }
|
||||
EQUIVALENCE(ff,k)
|
||||
EQUIVALENCE(gg,m)
|
||||
COMMON /COM/ j
|
||||
COMMON /COM/ m
|
||||
END
|
Loading…
Reference in New Issue
Block a user