Message ID | 4FA2539D.8030108@net-b.de |
---|---|
State | New |
Headers | show |
Dear Tobias, The patch is OK for 4.7 and trunk - thanks. The commit of the PR41600 is delayed until tomorrow or Sunday because of PR53191. I have regtested a fix for it and, since it is 'obvious' I will commit it with the main patch. In fact, it extends the constraint C614 (see resolve_ref) to include class expressions and removes the ad hoc error in the PR41600 patch. Cheers Paul On 3 May 2012 11:45, Tobias Burnus <burnus@net-b.de> wrote: > Dear all, > > attached you find a patch for a -std=f95 diagnostic issue related to F2003 > constructors, which is a 4.7/4.8 rejects-valid regression. > > It was build and regtested on x86-64-linux. > OK for 4.7 and the trunk? > > Note that a valid-F95 special case is still rejected with -std=f95 (cf. > attached test case), but I believe that the current patch is sufficient. > > > Secondly, I try to get again an overview about pending patches. I found: > > a) Pending review > > - Janne's Fix handling of temporary files > http://gcc.gnu.org/ml/fortran/2012-05/msg00006.html > - Janne's PR 49010/24518 MOD/MODULO fixes, take 2 > http://gcc.gnu.org/ml/fortran/2012-05/msg00007.html > - Janne's PR 52428 Reading of large negative values and range checking > http://gcc.gnu.org/ml/fortran/2012-05/msg00008.html > - Thomas' string comparison patch > http://gcc.gnu.org/ml/fortran/2012-04/msg00068.html > - This patch ;-) > > b) Pending committal: > > - Paul's SELECT TYPE patch > http://gcc.gnu.org/ml/fortran/2012-05/msg00000.html > - Bernhard's cleanup-module patch > http://gcc.gnu.org/ml/fortran/2012-04/msg00105.html > > c) More controversial patches: > > - FX's backtrace patch > http://gcc.gnu.org/ml/fortran/2012-04/msg00131.html > - Janus' proc-pointer patch (ABI breakage) > > http://gcc.gnu.org/ml/fortran/2012-04/msg00033.html > > > d) RFA patch > > - My C_F_pointer patch > http://gcc.gnu.org/ml/fortran/2012-04/msg00115.html > > I hope that I found all pending patches. > > > Thirdly, we are accumulating regressions. The current count is 12. There are > also a couple of other bugs, e.g. related to namelist reads, which should be > get some attention. > > Tobias
2012-05-03 Tobias Burnus <burnus@net-b.de> PR fortran/53111 * resolve.c (resolve_fl_derived): Fix -std=f95 diagnostic for generic vs. DT names. 2012-05-03 Tobias Burnus <burnus@net-b.de> PR fortran/53111 * gfortran.dg/constructor_7.f90: New. * gfortran.dg/constructor_8.f90: New. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 57da577..411ebb5 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -12015,6 +12015,8 @@ resolve_fl_derived (gfc_symbol *sym) if (!sym->attr.is_class) gfc_find_symbol (sym->name, sym->ns, 0, &gen_dt); if (gen_dt && gen_dt->generic && gen_dt->generic->next + && (!gen_dt->generic->sym->attr.use_assoc + || gen_dt->generic->sym->module != gen_dt->generic->next->sym->module) && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Generic name '%s' of " "function '%s' at %L being the same name as derived " "type at %L", sym->name, --- /dev/null 2012-04-23 08:17:57.683771451 +0200 +++ gcc/gcc/testsuite/gfortran.dg/constructor_7.f90 2012-05-03 11:03:40.000000000 +0200 @@ -0,0 +1,48 @@ +! { dg-do compile } +! { dg-options "-std=f95" } +! +! PR fortran/53111 +! + +! ------------ INVALID ONE ------------------------ + +module m +type t + integer :: i +end type t +end + +module m2 + interface t + module procedure sub + end interface t +contains + integer function sub() + sub = 4 + end function sub +end module m2 + +! Note: The following is formally valid as long as "t" is not used. +! For simplicity, -std=f95 will give an error. +! It is unlikely that a real-world program is rejected with -std=f95 +! because of that. + +use m ! { dg-error "Fortran 2003: Generic name 't' of function 'sub' at .1. being the same name as derived type at" } +use m2 ! { dg-error "Fortran 2003: Generic name 't' of function 'sub' at .1. being the same name as derived type at" } +! i = sub() ! << Truly invalid in F95, valid in F2003 +end + +! ------------ INVALID TWO ------------------------ + +module m3 +type t2 ! { dg-error "Fortran 2003: Generic name 't2' of function 'sub2' at .1. being the same name as derived type at" } + integer :: i +end type t2 + interface t2 + module procedure sub2 + end interface t2 +contains + integer function sub2() ! { dg-error "Fortran 2003: Generic name 't2' of function 'sub2' at .1. being the same name as derived type at" } + sub2 = 4 + end function sub2 +end module m3 --- /dev/null 2012-04-23 08:17:57.683771451 +0200 +++ gcc/gcc/testsuite/gfortran.dg/constructor_8.f90 2012-05-03 11:01:06.000000000 +0200 @@ -0,0 +1,22 @@ +! { dg-do compile } +! { dg-options "-std=f95" } +! +! PR fortran/53111 +! +! Contributed by Jacob Middag, reduced by Janus Weil. +! + +module a + type :: my + real :: x + end type +end module + +module b + use a +end module + +program test + use a + use b +end program