diff options
author | Janus Weil <janus@gcc.gnu.org> | 2016-11-29 15:15:29 +0100 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2016-11-29 15:15:29 +0100 |
commit | c0fe5a210968518a05a32c813e645f162f35201f (patch) | |
tree | 010b9714b76e403a300232fb3ea4cf571ec61534 | |
parent | 00738904f305a6237c2bae72b5fd7789995c4399 (diff) | |
download | gcc-c0fe5a210968518a05a32c813e645f162f35201f.zip gcc-c0fe5a210968518a05a32c813e645f162f35201f.tar.gz gcc-c0fe5a210968518a05a32c813e645f162f35201f.tar.bz2 |
[multiple changes]
2016-11-29 Tobias Burnus <burnus@net-b.de>
PR fortran/58175
* resolve.c (gfc_resolve_finalizers): Properly detect scalar finalizers.
2016-11-29 Janus Weil <janus@gcc.gnu.org>
PR fortran/58175
* gfortran.dg/finalize_30.f90: New test case.
From-SVN: r242960
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/finalize_30.f90 | 21 |
4 files changed, 35 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b6e82d7..d0dd306 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2016-11-29 Tobias Burnus <burnus@net-b.de> + + PR fortran/58175 + * resolve.c (gfc_resolve_finalizers): Properly detect scalar finalizers. + 2016-11-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/78474 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 9e628f1..152678f 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -12395,6 +12395,9 @@ gfc_resolve_finalizers (gfc_symbol* derived, bool *finalizable) /* Skip this finalizer if we already resolved it. */ if (list->proc_tree) { + if (list->proc_tree->n.sym->formal->sym->as == NULL + || list->proc_tree->n.sym->formal->sym->as->rank == 0) + seen_scalar = true; prev_link = &(list->next); continue; } @@ -12489,7 +12492,7 @@ gfc_resolve_finalizers (gfc_symbol* derived, bool *finalizable) } /* Is this the/a scalar finalizer procedure? */ - if (!arg->as || arg->as->rank == 0) + if (my_rank == 0) seen_scalar = true; /* Find the symtree for this procedure. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 62f362a..6d70524 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-11-29 Janus Weil <janus@gcc.gnu.org> + + PR fortran/58175 + * gfortran.dg/finalize_30.f90: New test case. + 2016-11-29 Martin Liska <mliska@suse.cz> PR gcov-profile/78582 diff --git a/gcc/testsuite/gfortran.dg/finalize_30.f90 b/gcc/testsuite/gfortran.dg/finalize_30.f90 new file mode 100644 index 0000000..281bfaa --- /dev/null +++ b/gcc/testsuite/gfortran.dg/finalize_30.f90 @@ -0,0 +1,21 @@ +! { dg-do compile } +! { dg-options "-Wsurprising" } +! +! PR 58175: [OOP] Incorrect warning message on scalar finalizer +! +! Contributed by Andrew Benson <abensonca@gmail.com> + +module ct + type :: a + contains + final :: aD + end type +contains + subroutine aD(self) + type(a), intent(inout) :: self + end subroutine +end module + +program test + use ct +end |