re PR fortran/46122 (PROTECTED check too strict)
2010-10-23 Tobias Burnus <burnus@net-b.de> PR fortran/46122 * expr.c (gfc_check_vardef_context): Fix PROTECTED check. 2010-10-23 Tobias Burnus <burnus@net-b.de> PR fortran/46122 * gfortran.dg/protected_8.f90: New. From-SVN: r165883
This commit is contained in:
parent
15ac394242
commit
67f67405cb
@ -1,3 +1,8 @@
|
||||
2010-10-23 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/46122
|
||||
* expr.c (gfc_check_vardef_context): Fix PROTECTED check.
|
||||
|
||||
2010-10-21 Janus Weil <janus@gcc.gnu.org>
|
||||
|
||||
PR fortran/46060
|
||||
|
@ -4400,7 +4400,7 @@ gfc_check_vardef_context (gfc_expr* e, bool pointer, const char* context)
|
||||
}
|
||||
|
||||
/* PROTECTED and use-associated. */
|
||||
if (sym->attr.is_protected && sym->attr.use_assoc)
|
||||
if (sym->attr.is_protected && sym->attr.use_assoc && check_intentin)
|
||||
{
|
||||
if (pointer && is_pointer)
|
||||
{
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-10-23 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/46122
|
||||
* gfortran.dg/protected_8.f90: New.
|
||||
|
||||
2010-10-23 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* gcc.dg/march-generic.c: Skip for -march in multilib options.
|
||||
|
50
gcc/testsuite/gfortran.dg/protected_8.f90
Normal file
50
gcc/testsuite/gfortran.dg/protected_8.f90
Normal file
@ -0,0 +1,50 @@
|
||||
! { dg-do compile }
|
||||
!
|
||||
! PR fortran/46122
|
||||
!
|
||||
! PROTECT check
|
||||
!
|
||||
! Contributed by Jared Ahern
|
||||
!
|
||||
|
||||
MODULE amod
|
||||
IMPLICIT NONE
|
||||
TYPE foo
|
||||
INTEGER :: i = 4
|
||||
INTEGER, POINTER :: j => NULL()
|
||||
END TYPE foo
|
||||
TYPE(foo), SAVE, PROTECTED :: a
|
||||
TYPE(foo), SAVE, PROTECTED, POINTER :: b
|
||||
INTEGER, SAVE, PROTECTED :: i = 5
|
||||
INTEGER, SAVE, PROTECTED, POINTER :: j => NULL()
|
||||
contains
|
||||
subroutine alloc()
|
||||
allocate(b,j)
|
||||
end subroutine alloc
|
||||
END MODULE amod
|
||||
|
||||
PROGRAM test
|
||||
USE amod
|
||||
IMPLICIT NONE
|
||||
INTEGER, TARGET :: k
|
||||
TYPE(foo), TARGET :: c
|
||||
k = 2 ! local
|
||||
c%i = 9 ! local
|
||||
|
||||
call alloc()
|
||||
|
||||
i = k ! { dg-error "is PROTECTED" }
|
||||
j => k ! { dg-error "is PROTECTED" }
|
||||
j = 3 ! OK 1
|
||||
a = c ! { dg-error "is PROTECTED" }
|
||||
a%i = k ! { dg-error "is PROTECTED" }
|
||||
a%j => k ! { dg-error "is PROTECTED" }
|
||||
a%j = 5 ! OK 2
|
||||
b => c ! { dg-error "is PROTECTED" }
|
||||
b%i = k ! OK 3
|
||||
b%j => k ! OK 4
|
||||
b%j = 5 ! OK 5
|
||||
|
||||
END PROGRAM test
|
||||
|
||||
! { dg-final { cleanup-modules "amod" } }
|
Loading…
x
Reference in New Issue
Block a user