[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #9 from pault at gcc dot gnu dot org 2005-11-06 20:05 --- Subject: Bug 24534 Author: pault Date: Sun Nov 6 20:05:12 2005 New Revision: 106567 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=106567 Log: 2005-11-06 Paul Thomas [EMAIL PROTECTED] PR fortran/24534 * resolve.c (resolve_symbol): Exclude case of PRIVATE declared within derived type from error associated with PRIVATE type components within derived type. PR fortran/20838 PR fortran/20840 * gfortran.h: Add prototype for gfc_has_vector_index. * io.c (gfc_resolve_dt): Error if internal unit has a vector index. * expr.c (gfc_has_vector_index): New function to check if any of the array references of an expression have vector inidices. (gfc_check_pointer_assign): Error if internal unit has a vector index. PR fortran/17737 * data.c (gfc_assign_data_value): Remove gcc_assert that caused the ICE and replace by a standard dependent warning/error if overwriting an existing initialization. * decl.c (gfc_data_variable): Remove old error for already initialized variable and the unused error check for common block variables. Add error for hots associated variable and standard dependent error for common block variables, outside of blockdata. * symbol.c (check_conflict): Add constraints for DATA statement. 2005-11-06 Paul Thomas [EMAIL PROTECTED] PR fortran/24534 gfortran.dg/private_type_2.f90: Modified to check that case with PRIVATE declaration within derived type is accepted. PR fortran/20838 gfortran.dg/pointer_assign_1.f90: New test. PR fortran/20840 * gfortran.dg/arrayio_0.f90: New test. PR fortran/17737 gfortran.dg/data_initialized.f90: New test. gfortran.dg/data_constraints_1.f90: New test. gfortran.dg/data_constraints_2.f90: New test. Added: trunk/gcc/testsuite/gfortran.dg/arrayio_0.f90 (with props) trunk/gcc/testsuite/gfortran.dg/data_constraints_1.f90 trunk/gcc/testsuite/gfortran.dg/data_constraints_2.f90 trunk/gcc/testsuite/gfortran.dg/data_initialized.f90 trunk/gcc/testsuite/gfortran.dg/pointer_assign_1.f90 (with props) Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/data.c trunk/gcc/fortran/decl.c trunk/gcc/fortran/expr.c trunk/gcc/fortran/gfortran.h trunk/gcc/fortran/io.c trunk/gcc/fortran/resolve.c trunk/gcc/fortran/symbol.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gfortran.dg/private_type_2.f90 Added: trunk/gcc/testsuite/gfortran.dg/arrayio_0.f90 URL: http://gcc.gnu.org/viewcvs/trunk/gcc/testsuite/gfortran.dg/arrayio_0.f90?root=gccview=autorev=106567 == --- trunk/gcc/testsuite/gfortran.dg/arrayio_0.f90 (added) +++ trunk/gcc/testsuite/gfortran.dg/arrayio_0.f90 Sun Nov 6 20:05:12 2005 @@ -1,0 +1,19 @@ +! { dg-do compile } +! Tests fix for PR20840 - would ICE with vector subscript in +! internal unit. +! +! Contributed by Paul Thomas [EMAIL PROTECTED] +! + character(len=12), dimension(4) :: iu, buff + character(len=48), dimension(2) :: iue + equivalence (iu, iue) + integer, dimension(4) :: v = (/2,1,4,3/) + iu = (/Vector,subscripts,not,allowed!/) + read (iu, '(a12/)') buff + read (iue(1), '(4a12)') buff + read (iu(4:1:-1), '(a12/)') buff + read (iu(v), '(a12/)') buff ! { dg-error with vector subscript } + read (iu((/2,4,3,1/)), '(a12/)') buff ! { dg-error with vector subscript } + print *, buff + end + Propchange: trunk/gcc/testsuite/gfortran.dg/arrayio_0.f90 ('svn:executable' added) Added: trunk/gcc/testsuite/gfortran.dg/pointer_assign_1.f90 URL: http://gcc.gnu.org/viewcvs/trunk/gcc/testsuite/gfortran.dg/pointer_assign_1.f90?root=gccview=autorev=106567 == --- trunk/gcc/testsuite/gfortran.dg/pointer_assign_1.f90 (added) +++ trunk/gcc/testsuite/gfortran.dg/pointer_assign_1.f90 Sun Nov 6 20:05:12 2005 @@ -1,0 +1,17 @@ +! { dg-do compile } +! Tests fix for PR20838 - would ICE with vector subscript in +! pointer assignment. +! +! Contributed by Paul Thomas [EMAIL PROTECTED] +! + integer, parameter, dimension(3) :: i = (/2,1,3/) + integer, dimension(3), target :: tar + integer, dimension(2, 3), target :: tar2 + integer, dimension(:), pointer :: ptr + ptr = tar + ptr = tar(3:1:-1) + ptr = tar(i) ! { dg-error with vector subscript } + ptr = tar2(1, :) + ptr = tar2(2, i) ! { dg-error with vector subscript } + end + Propchange: trunk/gcc/testsuite/gfortran.dg/pointer_assign_1.f90 ('svn:executable' added) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #10 from pault at gcc dot gnu dot org 2005-11-06 22:50 --- Subject: Bug 24534 Author: pault Date: Sun Nov 6 22:50:38 2005 New Revision: 106572 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=106572 Log: 2005-11-06 Paul Thomas [EMAIL PROTECTED] PR fortran/24534 * resolve.c (resolve_symbol): Exclude case of PRIVATE declared within derived type from error associated with PRIVATE type components within derived type. PR fortran/20838 PR fortran/20840 * gfortran.h: Add prototype for gfc_has_vector_index. * io.c (gfc_resolve_dt): Error if internal unit has a vector index. * expr.c (gfc_has_vector_index): New function to check if any of the array references of an expression have vector inidices. (gfc_check_pointer_assign): Error if internal unit has a vector index. PR fortran/17737 * data.c (gfc_assign_data_value): Remove gcc_assert that caused the ICE and replace by a standard dependent warning/error if overwriting an existing initialization. * decl.c (gfc_data_variable): Remove old error for already initialized variable and the unused error check for common block variables. Add error for host associated variable and standard dependent error for common block variables, outside of blockdata. * symbol.c (check_conflict): Add constraints for DATA statement. 2005-11-06 Paul Thomas [EMAIL PROTECTED] PR fortran/24534 gfortran.dg/private_type_2.f90: Modified to check that case with PRIVATE declaration within derived type is accepted. PR fortran/20838 gfortran.dg/pointer_assign_1.f90: New test. PR fortran/20840 * gfortran.dg/arrayio_0.f90: New test. PR fortran/17737 gfortran.dg/data_initialized.f90: New test. gfortran.dg/data_constraints_1.f90: New test. gfortran.dg/data_constraints_2.f90: New test. Added: branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/arrayio_0.f90 (with props) branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/data_constraints_1.f90 branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/data_constraints_2.f90 branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/data_initialized.f90 branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/pointer_assign_1.f90 (with props) Modified: branches/gcc-4_0-branch/gcc/fortran/ChangeLog branches/gcc-4_0-branch/gcc/fortran/data.c branches/gcc-4_0-branch/gcc/fortran/decl.c branches/gcc-4_0-branch/gcc/fortran/expr.c branches/gcc-4_0-branch/gcc/fortran/gfortran.h branches/gcc-4_0-branch/gcc/fortran/io.c branches/gcc-4_0-branch/gcc/fortran/resolve.c branches/gcc-4_0-branch/gcc/fortran/symbol.c branches/gcc-4_0-branch/gcc/testsuite/ChangeLog branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/private_type_2.f90 Added: branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/arrayio_0.f90 URL: http://gcc.gnu.org/viewcvs/branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/arrayio_0.f90?root=gccview=autorev=106572 == --- branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/arrayio_0.f90 (added) +++ branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/arrayio_0.f90 Sun Nov 6 22:50:38 2005 @@ -1,0 +1,19 @@ +! { dg-do compile } +! Tests fix for PR20840 - would ICE with vector subscript in +! internal unit. +! +! Contributed by Paul Thomas [EMAIL PROTECTED] +! + character(len=12), dimension(4) :: iu, buff + character(len=48), dimension(2) :: iue + equivalence (iu, iue) + integer, dimension(4) :: v = (/2,1,4,3/) + iu = (/Vector,subscripts,not,allowed!/) + read (iu, '(a12/)') buff + read (iue(1), '(4a12)') buff + read (iu(4:1:-1), '(a12/)') buff + read (iu(v), '(a12/)') buff ! { dg-error with vector subscript } + read (iu((/2,4,3,1/)), '(a12/)') buff ! { dg-error with vector subscript } + print *, buff + end + Propchange: branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/arrayio_0.f90 ('svn:executable' added) Added: branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/pointer_assign_1.f90 URL: http://gcc.gnu.org/viewcvs/branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/pointer_assign_1.f90?root=gccview=autorev=106572 == --- branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/pointer_assign_1.f90 (added) +++ branches/gcc-4_0-branch/gcc/testsuite/gfortran.dg/pointer_assign_1.f90 Sun Nov 6 22:50:38 2005 @@ -1,0 +1,17 @@ +! { dg-do compile } +! Tests fix for PR20838 - would ICE with vector subscript in +! pointer assignment. +! +! Contributed by Paul Thomas [EMAIL PROTECTED] +! + integer, parameter, dimension(3) :: i = (/2,1,3/) + integer, dimension(3), target :: tar + integer, dimension(2, 3), target :: tar2 + integer, dimension(:), pointer :: ptr + ptr = tar +
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #11 from pault at gcc dot gnu dot org 2005-11-06 22:51 --- Fixed on mainline and 4.0. -- pault at gcc dot gnu dot org changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #6 from paulthomas2 at wanadoo dot fr 2005-11-05 10:51 --- Subject: Re: [4.0/4.1 Regression] PUBLIC derived types with private components tobi at gcc dot gnu dot org wrote: --- Comment #5 from tobi at gcc dot gnu dot org 2005-11-01 19:22 --- CCing pault, as he introduced that error. Looks like you've been to strict, Paul I'll have a look at it tomorrow. Paul -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #7 from pault at gcc dot gnu dot org 2005-11-05 11:06 --- Yes, I have been too strict. The private derived type must be accessible inside the module where it is defined (4.4.1). I'll have a patch ready before the weekend is out. Thanks Harald! Paul -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #8 from pault at gcc dot gnu dot org 2005-11-05 17:22 --- This is clearly nonsense. Although the type my_t is PUBLIC, its components are not. No, this is not nonsense, just incorrect. See PR16404 and the discussion about test #6. I have incompletely applied the constraint. . standard have a peculiar order, but the first constraint after R427 says: If a component of a derived type is of a ttype declared to be private, either the derived type definition must contain the PRIVATE stement, or the derived type must be private. Therefore, the addition of sym-component_access != ACCESS_PRIVATE to the if statement that produces the error and the addition of your testcase to the testsuite fixes the problem (It's just now regtesting). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #5 from tobi at gcc dot gnu dot org 2005-11-01 19:22 --- CCing pault, as he introduced that error. Looks like you've been to strict, Paul -- tobi at gcc dot gnu dot org changed: What|Removed |Added CC||tobi at gcc dot gnu dot org, ||pault at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #4 from anlauf at gmx dot de 2005-10-31 08:09 --- (In reply to comment #2) How can this possibly be a GCC 4.0/4.1 regression?! It works with a GCC 4.1.0 20050913 snapshot, but not recent ones. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
-- pinskia at gcc dot gnu dot org changed: What|Removed |Added Priority|P2 |P5 Target Milestone|--- |4.1.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #3 from pinskia at gcc dot gnu dot org 2005-10-29 15:20 --- (In reply to comment #2) How can this possibly be a GCC 4.0/4.1 regression?! Because in 4.0.0, this worked. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Known to fail||4.1.0 4.0.3 Known to work||4.0.0 Summary|PUBLIC derived types with |[4.0/4.1 Regression] PUBLIC |private components |derived types with private ||components http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534
[Bug fortran/24534] [4.0/4.1 Regression] PUBLIC derived types with private components
--- Comment #1 from pinskia at gcc dot gnu dot org 2005-10-26 16:59 --- Confirmed, There might be just some missing check for this. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords||rejects-valid Last reconfirmed|-00-00 00:00:00 |2005-10-26 16:59:36 date|| Summary|gfortran: regression w/ |[4.0/4.1 Regression] PUBLIC |PUBLIC derived types with |derived types with private |private components |components http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24534